! function(t, e) {
	"object" == typeof module && "object" == typeof module.exports ? module.exports = t.document ? e(t, !0) : function(
		t) {
		if (!t.document) throw new Error("jQuery requires a window with a document");
		return e(t)
	} : e(t)
}("undefined" != typeof window ? window : this, function(x, t) {
	function e(t, e) {
		return e.toUpperCase()
	}
	var n = [],
		C = x.document,
		l = n.slice,
		g = n.concat,
		a = n.push,
		i = n.indexOf,
		r = {},
		o = r.toString,
		d = r.hasOwnProperty,
		m = {},
		s = "2.2.4",
		k = function(t, e) {
			return new k.fn.init(t, e)
		},
		u = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,
		c = /^-ms-/,
		h = /-([\da-z])/gi;

	function f(t) {
		var e = !!t && "length" in t && t.length,
			n = k.type(t);
		return "function" !== n && !k.isWindow(t) && ("array" === n || 0 === e || "number" == typeof e && 0 < e &&
			e - 1 in t)
	}
	k.fn = k.prototype = {
		jquery: s,
		constructor: k,
		selector: "",
		length: 0,
		toArray: function() {
			return l.call(this)
		},
		get: function(t) {
			return null != t ? t < 0 ? this[t + this.length] : this[t] : l.call(this)
		},
		pushStack: function(t) {
			t = k.merge(this.constructor(), t);
			return t.prevObject = this, t.context = this.context, t
		},
		each: function(t) {
			return k.each(this, t)
		},
		map: function(n) {
			return this.pushStack(k.map(this, function(t, e) {
				return n.call(t, e, t)
			}))
		},
		slice: function() {
			return this.pushStack(l.apply(this, arguments))
		},
		first: function() {
			return this.eq(0)
		},
		last: function() {
			return this.eq(-1)
		},
		eq: function(t) {
			var e = this.length,
				t = +t + (t < 0 ? e : 0);
			return this.pushStack(0 <= t && t < e ? [this[t]] : [])
		},
		end: function() {
			return this.prevObject || this.constructor()
		},
		push: a,
		sort: n.sort,
		splice: n.splice
	}, k.extend = k.fn.extend = function() {
		var t, e, n, r, i, o = arguments[0] || {},
			s = 1,
			a = arguments.length,
			u = !1;
		for ("boolean" == typeof o && (u = o, o = arguments[s] || {}, s++), "object" == typeof o || k
			.isFunction(o) || (o = {}), s === a && (o = this, s--); s < a; s++)
			if (null != (t = arguments[s]))
				for (e in t) i = o[e], n = t[e], o !== n && (u && n && (k.isPlainObject(n) || (r = k.isArray(
					n))) ? (i = r ? (r = !1, i && k.isArray(i) ? i : []) : i && k.isPlainObject(i) ? i :
				{}, o[e] = k.extend(u, i, n)) : void 0 !== n && (o[e] = n));
		return o
	}, k.extend({
		expando: "jQuery" + (s + Math.random()).replace(/\D/g, ""),
		isReady: !0,
		error: function(t) {
			throw new Error(t)
		},
		noop: function() {},
		isFunction: function(t) {
			return "function" === k.type(t)
		},
		isArray: Array.isArray,
		isWindow: function(t) {
			return null != t && t === t.window
		},
		isNumeric: function(t) {
			var e = t && t.toString();
			return !k.isArray(t) && 0 <= e - parseFloat(e) + 1
		},
		isPlainObject: function(t) {
			if ("object" !== k.type(t) || t.nodeType || k.isWindow(t)) return !1;
			if (t.constructor && !d.call(t, "constructor") && !d.call(t.constructor.prototype || {},
					"isPrototypeOf")) return !1;
			for (var e in t);
			return void 0 === e || d.call(t, e)
		},
		isEmptyObject: function(t) {
			for (var e in t) return !1;
			return !0
		},
		type: function(t) {
			return null == t ? t + "" : "object" == typeof t || "function" == typeof t ? r[o.call(t)] ||
				"object" : typeof t
		},
		globalEval: function(t) {
			var e, n = eval;
			(t = k.trim(t)) && (1 === t.indexOf("use strict") ? ((e = C.createElement("script")).text =
				t, C.head.appendChild(e).parentNode.removeChild(e)) : n(t))
		},
		camelCase: function(t) {
			return t.replace(c, "ms-").replace(h, e)
		},
		nodeName: function(t, e) {
			return t.nodeName && t.nodeName.toLowerCase() === e.toLowerCase()
		},
		each: function(t, e) {
			var n, r = 0;
			if (f(t))
				for (n = t.length; r < n && !1 !== e.call(t[r], r, t[r]); r++);
			else
				for (r in t)
					if (!1 === e.call(t[r], r, t[r])) break;
			return t
		},
		trim: function(t) {
			return null == t ? "" : (t + "").replace(u, "")
		},
		makeArray: function(t, e) {
			e = e || [];
			return null != t && (f(Object(t)) ? k.merge(e, "string" == typeof t ? [t] : t) : a.call(e,
				t)), e
		},
		inArray: function(t, e, n) {
			return null == e ? -1 : i.call(e, t, n)
		},
		merge: function(t, e) {
			for (var n = +e.length, r = 0, i = t.length; r < n; r++) t[i++] = e[r];
			return t.length = i, t
		},
		grep: function(t, e, n) {
			for (var r = [], i = 0, o = t.length, s = !n; i < o; i++) !e(t[i], i) != s && r.push(t[i]);
			return r
		},
		map: function(t, e, n) {
			var r, i, o = 0,
				s = [];
			if (f(t))
				for (r = t.length; o < r; o++) null != (i = e(t[o], o, n)) && s.push(i);
			else
				for (o in t) i = e(t[o], o, n), null != i && s.push(i);
			return g.apply([], s)
		},
		guid: 1,
		proxy: function(t, e) {
			var n, r;
			return "string" == typeof e && (r = t[e], e = t, t = r), k.isFunction(t) ? (n = l.call(
				arguments, 2), (r = function() {
				return t.apply(e || this, n.concat(l.call(arguments)))
			}).guid = t.guid = t.guid || k.guid++, r) : void 0
		},
		now: Date.now,
		support: m
	}), "function" == typeof Symbol && (k.fn[Symbol.iterator] = n[Symbol.iterator]), k.each(
		"Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),
		function(t, e) {
			r["[object " + e + "]"] = e.toLowerCase()
		});
	var p = function(n) {
		function h(t, e, n) {
			var r = "0x" + e - 65536;
			return r != r || n ? e : r < 0 ? String.fromCharCode(65536 + r) : String.fromCharCode(r >> 10 |
				55296, 1023 & r | 56320)
		}

		function e() {
			x()
		}
		var t, d, w, o, r, g, f, m, _, u, c, x, C, i, k, v, s, a, y, S = "sizzle" + +new Date,
			b = n.document,
			O = 0,
			l = 0,
			p = it(),
			E = it(),
			T = it(),
			A = function(t, e) {
				return t === e && (c = !0), 0
			},
			I = {}.hasOwnProperty,
			j = [],
			P = j.pop,
			N = j.push,
			D = j.push,
			R = j.slice,
			M = function(t, e) {
				for (var n = 0, r = t.length; n < r; n++)
					if (t[n] === e) return n;
				return -1
			},
			W =
			"checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",
			L = "[\\x20\\t\\r\\n\\f]",
			F = "(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",
			H = "\\[" + L + "*(" + F + ")(?:" + L + "*([*^$|!~]?=)" + L +
			"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + F + "))|)" + L + "*\\]",
			B = ":(" + F +
			")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|" + H +
			")*)|.*)\\)|)",
			q = new RegExp(L + "+", "g"),
			z = new RegExp("^" + L + "+|((?:^|[^\\\\])(?:\\\\.)*)" + L + "+$", "g"),
			U = new RegExp("^" + L + "*," + L + "*"),
			G = new RegExp("^" + L + "*([>+~]|" + L + ")" + L + "*"),
			V = new RegExp("=" + L + "*([^\\]'\"]*?)" + L + "*\\]", "g"),
			$ = new RegExp(B),
			X = new RegExp("^" + F + "$"),
			Y = {
				ID: new RegExp("^#(" + F + ")"),
				CLASS: new RegExp("^\\.(" + F + ")"),
				TAG: new RegExp("^(" + F + "|[*])"),
				ATTR: new RegExp("^" + H),
				PSEUDO: new RegExp("^" + B),
				CHILD: new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + L +
					"*(even|odd|(([+-]|)(\\d*)n|)" + L + "*(?:([+-]|)" + L + "*(\\d+)|))" + L + "*\\)|)",
					"i"),
				bool: new RegExp("^(?:" + W + ")$", "i"),
				needsContext: new RegExp("^" + L + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + L +
					"*((?:-\\d)?\\d*)" + L + "*\\)|)(?=[^-]|$)", "i")
			},
			K = /^(?:input|select|textarea|button)$/i,
			Q = /^h\d$/i,
			J = /^[^{]+\{\s*\[native \w/,
			Z = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,
			tt = /[+~]/,
			et = /'|\\/g,
			nt = new RegExp("\\\\([\\da-f]{1,6}" + L + "?|(" + L + ")|.)", "ig");
		try {
			D.apply(j = R.call(b.childNodes), b.childNodes), j[b.childNodes.length].nodeType
		} catch (t) {
			D = {
				apply: j.length ? function(t, e) {
					N.apply(t, R.call(e))
				} : function(t, e) {
					for (var n = t.length, r = 0; t[n++] = e[r++];);
					t.length = n - 1
				}
			}
		}

		function rt(t, e, n, r) {
			var i, o, s, a, u, c, l, h, f = e && e.ownerDocument,
				p = e ? e.nodeType : 9;
			if (n = n || [], "string" != typeof t || !t || 1 !== p && 9 !== p && 11 !== p) return n;
			if (!r && ((e ? e.ownerDocument || e : b) !== C && x(e), e = e || C, k)) {
				if (11 !== p && (c = Z.exec(t)))
					if (i = c[1]) {
						if (9 === p) {
							if (!(s = e.getElementById(i))) return n;
							if (s.id === i) return n.push(s), n
						} else if (f && (s = f.getElementById(i)) && y(e, s) && s.id === i) return n.push(s), n
					} else {
						if (c[2]) return D.apply(n, e.getElementsByTagName(t)), n;
						if ((i = c[3]) && d.getElementsByClassName && e.getElementsByClassName) return D.apply(
							n, e.getElementsByClassName(i)), n
					} if (d.qsa && !T[t + " "] && (!v || !v.test(t))) {
					if (1 !== p) f = e, h = t;
					else if ("object" !== e.nodeName.toLowerCase()) {
						for ((a = e.getAttribute("id")) ? a = a.replace(et, "\\$&") : e.setAttribute("id", a =
								S), o = (l = g(t)).length, u = X.test(a) ? "#" + a : "[id='" + a + "']"; o--;)
							l[o] = u + " " + ft(l[o]);
						h = l.join(","), f = tt.test(t) && lt(e.parentNode) || e
					}
					if (h) try {
						return D.apply(n, f.querySelectorAll(h)), n
					} catch (t) {} finally {
						a === S && e.removeAttribute("id")
					}
				}
			}
			return m(t.replace(z, "$1"), e, n, r)
		}

		function it() {
			var n = [];

			function r(t, e) {
				return n.push(t + " ") > w.cacheLength && delete r[n.shift()], r[t + " "] = e
			}
			return r
		}

		function ot(t) {
			return t[S] = !0, t
		}

		function st(t) {
			var e = C.createElement("div");
			try {
				return !!t(e)
			} catch (t) {
				return !1
			} finally {
				e.parentNode && e.parentNode.removeChild(e), e = null
			}
		}

		function at(t, e) {
			for (var n = t.split("|"), r = n.length; r--;) w.attrHandle[n[r]] = e
		}

		function ut(t, e) {
			var n = e && t,
				r = n && 1 === t.nodeType && 1 === e.nodeType && (~e.sourceIndex || 1 << 31) - (~t
					.sourceIndex || 1 << 31);
			if (r) return r;
			if (n)
				for (; n = n.nextSibling;)
					if (n === e) return -1;
			return t ? 1 : -1
		}

		function ct(s) {
			return ot(function(o) {
				return o = +o, ot(function(t, e) {
					for (var n, r = s([], t.length, o), i = r.length; i--;) t[n = r[i]] && (t[
						n] = !(e[n] = t[n]))
				})
			})
		}

		function lt(t) {
			return t && void 0 !== t.getElementsByTagName && t
		}
		for (t in d = rt.support = {}, r = rt.isXML = function(t) {
				t = t && (t.ownerDocument || t).documentElement;
				return !!t && "HTML" !== t.nodeName
			}, x = rt.setDocument = function(t) {
				var t = t ? t.ownerDocument || t : b;
				return t !== C && 9 === t.nodeType && t.documentElement && (i = (C = t).documentElement, k = !r(
						C), (t = C.defaultView) && t.top !== t && (t.addEventListener ? t.addEventListener(
						"unload", e, !1) : t.attachEvent && t.attachEvent("onunload", e)), d.attributes =
					st(function(t) {
						return t.className = "i", !t.getAttribute("className")
					}), d.getElementsByTagName = st(function(t) {
						return t.appendChild(C.createComment("")), !t.getElementsByTagName("*").length
					}), d.getElementsByClassName = J.test(C.getElementsByClassName), d.getById = st(
						function(t) {
							return i.appendChild(t).id = S, !C.getElementsByName || !C.getElementsByName(S)
								.length
						}), d.getById ? (w.find.ID = function(t, e) {
						if (void 0 !== e.getElementById && k) {
							t = e.getElementById(t);
							return t ? [t] : []
						}
					}, w.filter.ID = function(t) {
						var e = t.replace(nt, h);
						return function(t) {
							return t.getAttribute("id") === e
						}
					}) : (delete w.find.ID, w.filter.ID = function(t) {
						var e = t.replace(nt, h);
						return function(t) {
							t = void 0 !== t.getAttributeNode && t.getAttributeNode("id");
							return t && t.value === e
						}
					}), w.find.TAG = d.getElementsByTagName ? function(t, e) {
						return void 0 !== e.getElementsByTagName ? e.getElementsByTagName(t) : d.qsa ? e
							.querySelectorAll(t) : void 0
					} : function(t, e) {
						var n, r = [],
							i = 0,
							o = e.getElementsByTagName(t);
						if ("*" !== t) return o;
						for (; n = o[i++];) 1 === n.nodeType && r.push(n);
						return r
					}, w.find.CLASS = d.getElementsByClassName && function(t, e) {
						return void 0 !== e.getElementsByClassName && k ? e.getElementsByClassName(t) :
							void 0
					}, s = [], v = [], (d.qsa = J.test(C.querySelectorAll)) && (st(function(t) {
						i.appendChild(t).innerHTML = "<a id='" + S + "'></a><select id='" + S +
							"-\r\\' msallowcapture=''><option selected=''></option></select>", t
							.querySelectorAll("[msallowcapture^='']").length && v.push("[*^$]=" +
								L + "*(?:''|\"\")"), t.querySelectorAll("[selected]").length || v
							.push("\\[" + L + "*(?:value|" + W + ")"), t.querySelectorAll("[id~=" +
								S + "-]").length || v.push("~="), t.querySelectorAll(":checked")
							.length || v.push(":checked"), t.querySelectorAll("a#" + S + "+*")
							.length || v.push(".#.+[+~]")
					}), st(function(t) {
						var e = C.createElement("input");
						e.setAttribute("type", "hidden"), t.appendChild(e).setAttribute("name",
							"D"), t.querySelectorAll("[name=d]").length && v.push("name" + L +
								"*[*^$|!~]?="), t.querySelectorAll(":enabled").length || v.push(
								":enabled", ":disabled"), t.querySelectorAll("*,:x"), v.push(",.*:")
					})), (d.matchesSelector = J.test(a = i.matches || i.webkitMatchesSelector || i
						.mozMatchesSelector || i.oMatchesSelector || i.msMatchesSelector)) && st(function(
					t) {
						d.disconnectedMatch = a.call(t, "div"), a.call(t, "[s!='']:x"), s.push("!=", B)
					}), v = v.length && new RegExp(v.join("|")), s = s.length && new RegExp(s.join("|")),
					t = J.test(i.compareDocumentPosition), y = t || J.test(i.contains) ? function(t, e) {
						var n = 9 === t.nodeType ? t.documentElement : t,
							e = e && e.parentNode;
						return t === e || !(!e || 1 !== e.nodeType || !(n.contains ? n.contains(e) : t
							.compareDocumentPosition && 16 & t.compareDocumentPosition(e)))
					} : function(t, e) {
						if (e)
							for (; e = e.parentNode;)
								if (e === t) return !0;
						return !1
					}, A = t ? function(t, e) {
						if (t === e) return c = !0, 0;
						var n = !t.compareDocumentPosition - !e.compareDocumentPosition;
						return n || (1 & (n = (t.ownerDocument || t) === (e.ownerDocument || e) ? t
								.compareDocumentPosition(e) : 1) || !d.sortDetached && e
							.compareDocumentPosition(t) === n ? t === C || t.ownerDocument === b && y(b,
								t) ? -1 : e === C || e.ownerDocument === b && y(b, e) ? 1 : u ? M(u,
							t) - M(u, e) : 0 : 4 & n ? -1 : 1)
					} : function(t, e) {
						if (t === e) return c = !0, 0;
						var n, r = 0,
							i = t.parentNode,
							o = e.parentNode,
							s = [t],
							a = [e];
						if (!i || !o) return t === C ? -1 : e === C ? 1 : i ? -1 : o ? 1 : u ? M(u, t) - M(
							u, e) : 0;
						if (i === o) return ut(t, e);
						for (n = t; n = n.parentNode;) s.unshift(n);
						for (n = e; n = n.parentNode;) a.unshift(n);
						for (; s[r] === a[r];) r++;
						return r ? ut(s[r], a[r]) : s[r] === b ? -1 : a[r] === b ? 1 : 0
					}), C
			}, rt.matches = function(t, e) {
				return rt(t, null, null, e)
			}, rt.matchesSelector = function(t, e) {
				if ((t.ownerDocument || t) !== C && x(t), e = e.replace(V, "='$1']"), d.matchesSelector && k &&
					!T[e + " "] && (!s || !s.test(e)) && (!v || !v.test(e))) try {
					var n = a.call(t, e);
					if (n || d.disconnectedMatch || t.document && 11 !== t.document.nodeType) return n
				} catch (t) {}
				return 0 < rt(e, C, null, [t]).length
			}, rt.contains = function(t, e) {
				return (t.ownerDocument || t) !== C && x(t), y(t, e)
			}, rt.attr = function(t, e) {
				(t.ownerDocument || t) !== C && x(t);
				var n = w.attrHandle[e.toLowerCase()],
					n = n && I.call(w.attrHandle, e.toLowerCase()) ? n(t, e, !k) : void 0;
				return void 0 !== n ? n : d.attributes || !k ? t.getAttribute(e) : (n = t.getAttributeNode(
					e)) && n.specified ? n.value : null
			}, rt.error = function(t) {
				throw new Error("Syntax error, unrecognized expression: " + t)
			}, rt.uniqueSort = function(t) {
				var e, n = [],
					r = 0,
					i = 0;
				if (c = !d.detectDuplicates, u = !d.sortStable && t.slice(0), t.sort(A), c) {
					for (; e = t[i++];) e === t[i] && (r = n.push(i));
					for (; r--;) t.splice(n[r], 1)
				}
				return u = null, t
			}, o = rt.getText = function(t) {
				var e, n = "",
					r = 0,
					i = t.nodeType;
				if (i) {
					if (1 === i || 9 === i || 11 === i) {
						if ("string" == typeof t.textContent) return t.textContent;
						for (t = t.firstChild; t; t = t.nextSibling) n += o(t)
					} else if (3 === i || 4 === i) return t.nodeValue
				} else
					for (; e = t[r++];) n += o(e);
				return n
			}, (w = rt.selectors = {
				cacheLength: 50,
				createPseudo: ot,
				match: Y,
				attrHandle: {},
				find: {},
				relative: {
					">": {
						dir: "parentNode",
						first: !0
					},
					" ": {
						dir: "parentNode"
					},
					"+": {
						dir: "previousSibling",
						first: !0
					},
					"~": {
						dir: "previousSibling"
					}
				},
				preFilter: {
					ATTR: function(t) {
						return t[1] = t[1].replace(nt, h), t[3] = (t[3] || t[4] || t[5] || "").replace(
							nt, h), "~=" === t[2] && (t[3] = " " + t[3] + " "), t.slice(0, 4)
					},
					CHILD: function(t) {
						return t[1] = t[1].toLowerCase(), "nth" === t[1].slice(0, 3) ? (t[3] || rt
								.error(t[0]), t[4] = +(t[4] ? t[5] + (t[6] || 1) : 2 * ("even" === t[
									3] || "odd" === t[3])), t[5] = +(t[7] + t[8] || "odd" === t[3])) :
							t[3] && rt.error(t[0]), t
					},
					PSEUDO: function(t) {
						var e, n = !t[6] && t[2];
						return Y.CHILD.test(t[0]) ? null : (t[3] ? t[2] = t[4] || t[5] || "" : n && $
							.test(n) && (e = g(n, !0)) && (e = n.indexOf(")", n.length - e) - n
								.length) && (t[0] = t[0].slice(0, e), t[2] = n.slice(0, e)), t
							.slice(0, 3))
					}
				},
				filter: {
					TAG: function(t) {
						var e = t.replace(nt, h).toLowerCase();
						return "*" === t ? function() {
							return !0
						} : function(t) {
							return t.nodeName && t.nodeName.toLowerCase() === e
						}
					},
					CLASS: function(t) {
						var e = p[t + " "];
						return e || (e = new RegExp("(^|" + L + ")" + t + "(" + L + "|$)")) && p(t,
							function(t) {
								return e.test("string" == typeof t.className && t.className ||
									void 0 !== t.getAttribute && t.getAttribute("class") || "")
							})
					},
					ATTR: function(e, n, r) {
						return function(t) {
							t = rt.attr(t, e);
							return null == t ? "!=" === n : !n || (t += "", "=" === n ? t === r :
								"!=" === n ? t !== r : "^=" === n ? r && 0 === t.indexOf(r) :
								"*=" === n ? r && -1 < t.indexOf(r) : "$=" === n ? r && t.slice(
									-r.length) === r : "~=" === n ? -1 < (" " + t.replace(q,
									" ") + " ").indexOf(r) : "|=" === n && (t === r || t.slice(
									0, r.length + 1) === r + "-"))
						}
					},
					CHILD: function(d, t, e, g, m) {
						var v = "nth" !== d.slice(0, 3),
							y = "last" !== d.slice(-4),
							b = "of-type" === t;
						return 1 === g && 0 === m ? function(t) {
							return !!t.parentNode
						} : function(t, e, n) {
							var r, i, o, s, a, u, c = v != y ? "nextSibling" : "previousSibling",
								l = t.parentNode,
								h = b && t.nodeName.toLowerCase(),
								f = !n && !b,
								p = !1;
							if (l) {
								if (v) {
									for (; c;) {
										for (s = t; s = s[c];)
											if (b ? s.nodeName.toLowerCase() === h : 1 === s
												.nodeType) return !1;
										u = c = "only" === d && !u && "nextSibling"
									}
									return !0
								}
								if (u = [y ? l.firstChild : l.lastChild], y && f) {
									for (p = (a = (r = (i = (o = (s = l)[S] || (s[S] = {}))[s
												.uniqueID] || (o[s.uniqueID] = {}))[d] || [])[0] ===
											O && r[1]) && r[2], s = a && l.childNodes[a]; s = ++a &&
										s && s[c] || (p = a = 0) || u.pop();)
										if (1 === s.nodeType && ++p && s === t) {
											i[d] = [O, a, p];
											break
										}
								} else if (f && (p = a = (r = (i = (o = (s = t)[S] || (s[S] = {}))[s
											.uniqueID] || (o[s.uniqueID] = {}))[d] || [])[0] ===
										O && r[1]), !1 === p)
									for (;
										(s = ++a && s && s[c] || (p = a = 0) || u.pop()) && ((b ? s
												.nodeName.toLowerCase() !== h : 1 !== s.nodeType) ||
											!++p || (f && ((i = (o = s[S] || (s[S] = {}))[s
												.uniqueID] || (o[s.uniqueID] = {}))[d] = [O,
												p
											]), s !== t)););
								return (p -= m) === g || p % g == 0 && 0 <= p / g
							}
						}
					},
					PSEUDO: function(t, o) {
						var e, s = w.pseudos[t] || w.setFilters[t.toLowerCase()] || rt.error(
							"unsupported pseudo: " + t);
						return s[S] ? s(o) : 1 < s.length ? (e = [t, t, "", o], w.setFilters
							.hasOwnProperty(t.toLowerCase()) ? ot(function(t, e) {
								for (var n, r = s(t, o), i = r.length; i--;) t[n = M(t, r[
									i])] = !(e[n] = r[i])
							}) : function(t) {
								return s(t, 0, e)
							}) : s
					}
				},
				pseudos: {
					not: ot(function(t) {
						var r = [],
							i = [],
							a = f(t.replace(z, "$1"));
						return a[S] ? ot(function(t, e, n, r) {
							for (var i, o = a(t, null, r, []), s = t.length; s--;)(i = o[
								s]) && (t[s] = !(e[s] = i))
						}) : function(t, e, n) {
							return r[0] = t, a(r, null, n, i), r[0] = null, !i.pop()
						}
					}),
					has: ot(function(e) {
						return function(t) {
							return 0 < rt(e, t).length
						}
					}),
					contains: ot(function(e) {
						return e = e.replace(nt, h),
							function(t) {
								return -1 < (t.textContent || t.innerText || o(t)).indexOf(e)
							}
					}),
					lang: ot(function(n) {
						return X.test(n || "") || rt.error("unsupported lang: " + n), n = n.replace(
								nt, h).toLowerCase(),
							function(t) {
								var e;
								do {
									if (e = k ? t.lang : t.getAttribute("xml:lang") || t
										.getAttribute("lang")) return (e = e.toLowerCase()) === n ||
										0 === e.indexOf(n + "-")
								} while ((t = t.parentNode) && 1 === t.nodeType);
								return !1
							}
					}),
					target: function(t) {
						var e = n.location && n.location.hash;
						return e && e.slice(1) === t.id
					},
					root: function(t) {
						return t === i
					},
					focus: function(t) {
						return t === C.activeElement && (!C.hasFocus || C.hasFocus()) && !!(t.type || t
							.href || ~t.tabIndex)
					},
					enabled: function(t) {
						return !1 === t.disabled
					},
					disabled: function(t) {
						return !0 === t.disabled
					},
					checked: function(t) {
						var e = t.nodeName.toLowerCase();
						return "input" === e && !!t.checked || "option" === e && !!t.selected
					},
					selected: function(t) {
						return t.parentNode && t.parentNode.selectedIndex, !0 === t.selected
					},
					empty: function(t) {
						for (t = t.firstChild; t; t = t.nextSibling)
							if (t.nodeType < 6) return !1;
						return !0
					},
					parent: function(t) {
						return !w.pseudos.empty(t)
					},
					header: function(t) {
						return Q.test(t.nodeName)
					},
					input: function(t) {
						return K.test(t.nodeName)
					},
					button: function(t) {
						var e = t.nodeName.toLowerCase();
						return "input" === e && "button" === t.type || "button" === e
					},
					text: function(t) {
						return "input" === t.nodeName.toLowerCase() && "text" === t.type && (null == (
							t = t.getAttribute("type")) || "text" === t.toLowerCase())
					},
					first: ct(function() {
						return [0]
					}),
					last: ct(function(t, e) {
						return [e - 1]
					}),
					eq: ct(function(t, e, n) {
						return [n < 0 ? n + e : n]
					}),
					even: ct(function(t, e) {
						for (var n = 0; n < e; n += 2) t.push(n);
						return t
					}),
					odd: ct(function(t, e) {
						for (var n = 1; n < e; n += 2) t.push(n);
						return t
					}),
					lt: ct(function(t, e, n) {
						for (var r = n < 0 ? n + e : n; 0 <= --r;) t.push(r);
						return t
					}),
					gt: ct(function(t, e, n) {
						for (var r = n < 0 ? n + e : n; ++r < e;) t.push(r);
						return t
					})
				}
			}).pseudos.nth = w.pseudos.eq, {
				radio: !0,
				checkbox: !0,
				file: !0,
				password: !0,
				image: !0
			}) w.pseudos[t] = function(e) {
			return function(t) {
				return "input" === t.nodeName.toLowerCase() && t.type === e
			}
		}(t);
		for (t in {
				submit: !0,
				reset: !0
			}) w.pseudos[t] = function(n) {
			return function(t) {
				var e = t.nodeName.toLowerCase();
				return ("input" === e || "button" === e) && t.type === n
			}
		}(t);

		function ht() {}

		function ft(t) {
			for (var e = 0, n = t.length, r = ""; e < n; e++) r += t[e].value;
			return r
		}

		function pt(s, t, e) {
			var a = t.dir,
				u = e && "parentNode" === a,
				c = l++;
			return t.first ? function(t, e, n) {
				for (; t = t[a];)
					if (1 === t.nodeType || u) return s(t, e, n)
			} : function(t, e, n) {
				var r, i, o = [O, c];
				if (n) {
					for (; t = t[a];)
						if ((1 === t.nodeType || u) && s(t, e, n)) return !0
				} else
					for (; t = t[a];)
						if (1 === t.nodeType || u) {
							if ((i = (r = (i = t[S] || (t[S] = {}))[t.uniqueID] || (i[t.uniqueID] = {}))[
								a]) && i[0] === O && i[1] === c) return o[2] = i[2];
							if ((r[a] = o)[2] = s(t, e, n)) return !0
						}
			}
		}

		function dt(i) {
			return 1 < i.length ? function(t, e, n) {
				for (var r = i.length; r--;)
					if (!i[r](t, e, n)) return !1;
				return !0
			} : i[0]
		}

		function gt(t, e, n, r, i) {
			for (var o, s = [], a = 0, u = t.length, c = null != e; a < u; a++)(o = t[a]) && (n && !n(o, r,
				i) || (s.push(o), c && e.push(a)));
			return s
		}

		function mt(p, d, g, m, v, t) {
			return m && !m[S] && (m = mt(m)), v && !v[S] && (v = mt(v, t)), ot(function(t, e, n, r) {
				var i, o, s, a = [],
					u = [],
					c = e.length,
					l = t || function(t, e, n) {
						for (var r = 0, i = e.length; r < i; r++) rt(t, e[r], n);
						return n
					}(d || "*", n.nodeType ? [n] : n, []),
					h = !p || !t && d ? l : gt(l, a, p, n, r),
					f = g ? v || (t ? p : c || m) ? [] : e : h;
				if (g && g(h, f, n, r), m)
					for (i = gt(f, u), m(i, [], n, r), o = i.length; o--;)(s = i[o]) && (f[u[o]] = !(h[
						u[o]] = s));
				if (t) {
					if (v || p) {
						if (v) {
							for (i = [], o = f.length; o--;)(s = f[o]) && i.push(h[o] = s);
							v(null, f = [], i, r)
						}
						for (o = f.length; o--;)(s = f[o]) && -1 < (i = v ? M(t, s) : a[o]) && (t[i] = !
							(e[i] = s))
					}
				} else f = gt(f === e ? f.splice(c, f.length) : f), v ? v(null, e, f, r) : D.apply(e, f)
			})
		}

		function vt(m, v) {
			function t(t, e, n, r, i) {
				var o, s, a, u = 0,
					c = "0",
					l = t && [],
					h = [],
					f = _,
					p = t || b && w.find.TAG("*", i),
					d = O += null == f ? 1 : Math.random() || .1,
					g = p.length;
				for (i && (_ = e === C || e || i); c !== g && null != (o = p[c]); c++) {
					if (b && o) {
						for (s = 0, e || o.ownerDocument === C || (x(o), n = !k); a = m[s++];)
							if (a(o, e || C, n)) {
								r.push(o);
								break
							} i && (O = d)
					}
					y && ((o = !a && o) && u--, t && l.push(o))
				}
				if (u += c, y && c !== u) {
					for (s = 0; a = v[s++];) a(l, h, e, n);
					if (t) {
						if (0 < u)
							for (; c--;) l[c] || h[c] || (h[c] = P.call(r));
						h = gt(h)
					}
					D.apply(r, h), i && !t && 0 < h.length && 1 < u + v.length && rt.uniqueSort(r)
				}
				return i && (O = d, _ = f), l
			}
			var y = 0 < v.length,
				b = 0 < m.length;
			return y ? ot(t) : t
		}
		return ht.prototype = w.filters = w.pseudos, w.setFilters = new ht, g = rt.tokenize = function(t, e) {
				var n, r, i, o, s, a, u, c = E[t + " "];
				if (c) return e ? 0 : c.slice(0);
				for (s = t, a = [], u = w.preFilter; s;) {
					for (o in n && !(r = U.exec(s)) || (r && (s = s.slice(r[0].length) || s), a.push(i = [])),
						n = !1, (r = G.exec(s)) && (n = r.shift(), i.push({
							value: n,
							type: r[0].replace(z, " ")
						}), s = s.slice(n.length)), w.filter) !(r = Y[o].exec(s)) || u[o] && !(r = u[o](r)) || (
						n = r.shift(), i.push({
							value: n,
							type: o,
							matches: r
						}), s = s.slice(n.length));
					if (!n) break
				}
				return e ? s.length : s ? rt.error(t) : E(t, a).slice(0)
			}, f = rt.compile = function(t, e) {
				var n, r = [],
					i = [],
					o = T[t + " "];
				if (!o) {
					for (n = (e = e || g(t)).length; n--;)((o = function t(e) {
						for (var r, n, i, o = e.length, s = w.relative[e[0].type], a = s || w
								.relative[" "], u = s ? 1 : 0, c = pt(function(t) {
									return t === r
								}, a, !0), l = pt(function(t) {
									return -1 < M(r, t)
								}, a, !0), h = [function(t, e, n) {
									return n = !s && (n || e !== _) || ((r = e).nodeType ? c :
										l)(t, e, n), r = null, n
								}]; u < o; u++)
							if (n = w.relative[e[u].type]) h = [pt(dt(h), n)];
							else {
								if ((n = w.filter[e[u].type].apply(null, e[u].matches))[S]) {
									for (i = ++u; i < o && !w.relative[e[i].type]; i++);
									return mt(1 < u && dt(h), 1 < u && ft(e.slice(0, u - 1).concat({
											value: " " === e[u - 2].type ? "*" : ""
										})).replace(z, "$1"), n, u < i && t(e.slice(u, i)), i <
										o && t(e = e.slice(i)), i < o && ft(e))
								}
								h.push(n)
							} return dt(h)
					}(e[n]))[S] ? r : i).push(o);
					(o = T(t, vt(i, r))).selector = t
				}
				return o
			}, m = rt.select = function(t, e, n, r) {
				var i, o, s, a, u, c = "function" == typeof t && t,
					l = !r && g(t = c.selector || t);
				if (n = n || [], 1 === l.length) {
					if (2 < (o = l[0] = l[0].slice(0)).length && "ID" === (s = o[0]).type && d.getById && 9 ===
						e.nodeType && k && w.relative[o[1].type]) {
						if (!(e = (w.find.ID(s.matches[0].replace(nt, h), e) || [])[0])) return n;
						c && (e = e.parentNode), t = t.slice(o.shift().value.length)
					}
					for (i = Y.needsContext.test(t) ? 0 : o.length; i-- && (s = o[i], !w.relative[a = s.type]);)
						if ((u = w.find[a]) && (r = u(s.matches[0].replace(nt, h), tt.test(o[0].type) && lt(e
								.parentNode) || e))) {
							if (o.splice(i, 1), !(t = r.length && ft(o))) return D.apply(n, r), n;
							break
						}
				}
				return (c || f(t, l))(r, e, !k, n, !e || tt.test(t) && lt(e.parentNode) || e), n
			}, d.sortStable = S.split("").sort(A).join("") === S, d.detectDuplicates = !!c, x(), d
			.sortDetached = st(function(t) {
				return 1 & t.compareDocumentPosition(C.createElement("div"))
			}), st(function(t) {
				return t.innerHTML = "<a href='#'></a>", "#" === t.firstChild.getAttribute("href")
			}) || at("type|href|height|width", function(t, e, n) {
				return n ? void 0 : t.getAttribute(e, "type" === e.toLowerCase() ? 1 : 2)
			}), d.attributes && st(function(t) {
				return t.innerHTML = "<input/>", t.firstChild.setAttribute("value", ""), "" === t.firstChild
					.getAttribute("value")
			}) || at("value", function(t, e, n) {
				return n || "input" !== t.nodeName.toLowerCase() ? void 0 : t.defaultValue
			}), st(function(t) {
				return null == t.getAttribute("disabled")
			}) || at(W, function(t, e, n) {
				return n ? void 0 : !0 === t[e] ? e.toLowerCase() : (e = t.getAttributeNode(e)) && e
					.specified ? e.value : null
			}), rt
	}(x);
	k.find = p, k.expr = p.selectors, k.expr[":"] = k.expr.pseudos, k.uniqueSort = k.unique = p.uniqueSort, k.text =
		p.getText, k.isXMLDoc = p.isXML, k.contains = p.contains;

	function v(t, e, n) {
		for (var r = [], i = void 0 !== n;
			(t = t[e]) && 9 !== t.nodeType;)
			if (1 === t.nodeType) {
				if (i && k(t).is(n)) break;
				r.push(t)
			} return r
	}

	function y(t, e) {
		for (var n = []; t; t = t.nextSibling) 1 === t.nodeType && t !== e && n.push(t);
		return n
	}
	var b = k.expr.match.needsContext,
		w = /^<([\w-]+)\s*\/?>(?:<\/\1>|)$/,
		_ = /^.[^:#\[\.,]*$/;

	function S(t, n, r) {
		if (k.isFunction(n)) return k.grep(t, function(t, e) {
			return !!n.call(t, e, t) !== r
		});
		if (n.nodeType) return k.grep(t, function(t) {
			return t === n !== r
		});
		if ("string" == typeof n) {
			if (_.test(n)) return k.filter(n, t, r);
			n = k.filter(n, t)
		}
		return k.grep(t, function(t) {
			return -1 < i.call(n, t) !== r
		})
	}
	k.filter = function(t, e, n) {
		var r = e[0];
		return n && (t = ":not(" + t + ")"), 1 === e.length && 1 === r.nodeType ? k.find.matchesSelector(r, t) ?
			[r] : [] : k.find.matches(t, k.grep(e, function(t) {
				return 1 === t.nodeType
			}))
	}, k.fn.extend({
		find: function(t) {
			var e, n = this.length,
				r = [],
				i = this;
			if ("string" != typeof t) return this.pushStack(k(t).filter(function() {
				for (e = 0; e < n; e++)
					if (k.contains(i[e], this)) return !0
			}));
			for (e = 0; e < n; e++) k.find(t, i[e], r);
			return (r = this.pushStack(1 < n ? k.unique(r) : r)).selector = this.selector ? this
				.selector + " " + t : t, r
		},
		filter: function(t) {
			return this.pushStack(S(this, t || [], !1))
		},
		not: function(t) {
			return this.pushStack(S(this, t || [], !0))
		},
		is: function(t) {
			return !!S(this, "string" == typeof t && b.test(t) ? k(t) : t || [], !1).length
		}
	});
	var O, E = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/;
	(k.fn.init = function(t, e, n) {
		if (!t) return this;
		if (n = n || O, "string" != typeof t) return t.nodeType ? (this.context = this[0] = t, this.length = 1,
			this) : k.isFunction(t) ? void 0 !== n.ready ? n.ready(t) : t(k) : (void 0 !== t.selector &&
			(this.selector = t.selector, this.context = t.context), k.makeArray(t, this));
		if (!(r = "<" === t[0] && ">" === t[t.length - 1] && 3 <= t.length ? [null, t, null] : E.exec(t)) || !r[
				1] && e) return (!e || e.jquery ? e || n : this.constructor(e)).find(t);
		if (r[1]) {
			if (e = e instanceof k ? e[0] : e, k.merge(this, k.parseHTML(r[1], e && e.nodeType ? e
					.ownerDocument || e : C, !0)), w.test(r[1]) && k.isPlainObject(e))
				for (var r in e) k.isFunction(this[r]) ? this[r](e[r]) : this.attr(r, e[r]);
			return this
		}
		return (n = C.getElementById(r[2])) && n.parentNode && (this.length = 1, this[0] = n), this.context = C,
			this.selector = t, this
	}).prototype = k.fn, O = k(C);
	var T = /^(?:parents|prev(?:Until|All))/,
		A = {
			children: !0,
			contents: !0,
			next: !0,
			prev: !0
		};

	function I(t, e) {
		for (;
			(t = t[e]) && 1 !== t.nodeType;);
		return t
	}
	k.fn.extend({
		has: function(t) {
			var e = k(t, this),
				n = e.length;
			return this.filter(function() {
				for (var t = 0; t < n; t++)
					if (k.contains(this, e[t])) return !0
			})
		},
		closest: function(t, e) {
			for (var n, r = 0, i = this.length, o = [], s = b.test(t) || "string" != typeof t ? k(t,
					e || this.context) : 0; r < i; r++)
				for (n = this[r]; n && n !== e; n = n.parentNode)
					if (n.nodeType < 11 && (s ? -1 < s.index(n) : 1 === n.nodeType && k.find
							.matchesSelector(n, t))) {
						o.push(n);
						break
					} return this.pushStack(1 < o.length ? k.uniqueSort(o) : o)
		},
		index: function(t) {
			return t ? "string" == typeof t ? i.call(k(t), this[0]) : i.call(this, t.jquery ? t[0] :
				t) : this[0] && this[0].parentNode ? this.first().prevAll().length : -1
		},
		add: function(t, e) {
			return this.pushStack(k.uniqueSort(k.merge(this.get(), k(t, e))))
		},
		addBack: function(t) {
			return this.add(null == t ? this.prevObject : this.prevObject.filter(t))
		}
	}), k.each({
		parent: function(t) {
			t = t.parentNode;
			return t && 11 !== t.nodeType ? t : null
		},
		parents: function(t) {
			return v(t, "parentNode")
		},
		parentsUntil: function(t, e, n) {
			return v(t, "parentNode", n)
		},
		next: function(t) {
			return I(t, "nextSibling")
		},
		prev: function(t) {
			return I(t, "previousSibling")
		},
		nextAll: function(t) {
			return v(t, "nextSibling")
		},
		prevAll: function(t) {
			return v(t, "previousSibling")
		},
		nextUntil: function(t, e, n) {
			return v(t, "nextSibling", n)
		},
		prevUntil: function(t, e, n) {
			return v(t, "previousSibling", n)
		},
		siblings: function(t) {
			return y((t.parentNode || {}).firstChild, t)
		},
		children: function(t) {
			return y(t.firstChild)
		},
		contents: function(t) {
			return t.contentDocument || k.merge([], t.childNodes)
		}
	}, function(r, i) {
		k.fn[r] = function(t, e) {
			var n = k.map(this, i, t);
			return "Until" !== r.slice(-5) && (e = t), e && "string" == typeof e && (n = k.filter(e,
				n)), 1 < this.length && (A[r] || k.uniqueSort(n), T.test(r) && n.reverse()), this
				.pushStack(n)
		}
	});
	var j, P = /\S+/g;

	function N() {
		C.removeEventListener("DOMContentLoaded", N), x.removeEventListener("load", N), k.ready()
	}
	k.Callbacks = function(r) {
		var t, n;
		r = "string" == typeof r ? (t = r, n = {}, k.each(t.match(P) || [], function(t, e) {
			n[e] = !0
		}), n) : k.extend({}, r);

		function i() {
			for (a = r.once, s = o = !0; c.length; l = -1)
				for (e = c.shift(); ++l < u.length;) !1 === u[l].apply(e[0], e[1]) && r.stopOnFalse && (l = u
					.length, e = !1);
			r.memory || (e = !1), o = !1, a && (u = e ? [] : "")
		}
		var o, e, s, a, u = [],
			c = [],
			l = -1,
			h = {
				add: function() {
					return u && (e && !o && (l = u.length - 1, c.push(e)), function n(t) {
						k.each(t, function(t, e) {
							k.isFunction(e) ? r.unique && h.has(e) || u.push(e) : e && e
								.length && "string" !== k.type(e) && n(e)
						})
					}(arguments), e && !o && i()), this
				},
				remove: function() {
					return k.each(arguments, function(t, e) {
						for (var n; - 1 < (n = k.inArray(e, u, n));) u.splice(n, 1), n <= l && l--
					}), this
				},
				has: function(t) {
					return t ? -1 < k.inArray(t, u) : 0 < u.length
				},
				empty: function() {
					return u = u && [], this
				},
				disable: function() {
					return a = c = [], u = e = "", this
				},
				disabled: function() {
					return !u
				},
				lock: function() {
					return a = c = [], e || (u = e = ""), this
				},
				locked: function() {
					return !!a
				},
				fireWith: function(t, e) {
					return a || (e = [t, (e = e || []).slice ? e.slice() : e], c.push(e), o || i()), this
				},
				fire: function() {
					return h.fireWith(this, arguments), this
				},
				fired: function() {
					return !!s
				}
			};
		return h
	}, k.extend({
		Deferred: function(t) {
			var o = [
					["resolve", "done", k.Callbacks("once memory"), "resolved"],
					["reject", "fail", k.Callbacks("once memory"), "rejected"],
					["notify", "progress", k.Callbacks("memory")]
				],
				i = "pending",
				s = {
					state: function() {
						return i
					},
					always: function() {
						return a.done(arguments).fail(arguments), this
					},
					then: function() {
						var i = arguments;
						return k.Deferred(function(r) {
							k.each(o, function(t, e) {
								var n = k.isFunction(i[t]) && i[t];
								a[e[1]](function() {
									var t = n && n.apply(this, arguments);
									t && k.isFunction(t.promise) ? t
										.promise().progress(r.notify).done(r
											.resolve).fail(r.reject) : r[e[
											0] + "With"](this === s ? r
											.promise() : this, n ? [t] :
											arguments)
								})
							}), i = null
						}).promise()
					},
					promise: function(t) {
						return null != t ? k.extend(t, s) : s
					}
				},
				a = {};
			return s.pipe = s.then, k.each(o, function(t, e) {
				var n = e[2],
					r = e[3];
				s[e[1]] = n.add, r && n.add(function() {
					i = r
				}, o[1 ^ t][2].disable, o[2][2].lock), a[e[0]] = function() {
					return a[e[0] + "With"](this === a ? s : this, arguments), this
				}, a[e[0] + "With"] = n.fireWith
			}), s.promise(a), t && t.call(a, a), a
		},
		when: function(t) {
			function e(e, n, r) {
				return function(t) {
					n[e] = this, r[e] = 1 < arguments.length ? l.call(arguments) : t, r === i ? c
						.notifyWith(n, r) : --u || c.resolveWith(n, r)
				}
			}
			var i, n, r, o = 0,
				s = l.call(arguments),
				a = s.length,
				u = 1 !== a || t && k.isFunction(t.promise) ? a : 0,
				c = 1 === u ? t : k.Deferred();
			if (1 < a)
				for (i = new Array(a), n = new Array(a), r = new Array(a); o < a; o++) s[o] && k
					.isFunction(s[o].promise) ? s[o].promise().progress(e(o, n, i)).done(e(o, r, s))
					.fail(c.reject) : --u;
			return u || c.resolveWith(r, s), c.promise()
		}
	}), k.fn.ready = function(t) {
		return k.ready.promise().done(t), this
	}, k.extend({
		isReady: !1,
		readyWait: 1,
		holdReady: function(t) {
			t ? k.readyWait++ : k.ready(!0)
		},
		ready: function(t) {
			(!0 === t ? --k.readyWait : k.isReady) || ((k.isReady = !0) !== t && 0 < --k.readyWait || (j
				.resolveWith(C, [k]), k.fn.triggerHandler && (k(C).triggerHandler("ready"), k(C)
					.off("ready"))))
		}
	}), k.ready.promise = function(t) {
		return j || (j = k.Deferred(), "complete" === C.readyState || "loading" !== C.readyState && !C
			.documentElement.doScroll ? x.setTimeout(k.ready) : (C.addEventListener("DOMContentLoaded", N),
				x.addEventListener("load", N))), j.promise(t)
	}, k.ready.promise();

	function D(t) {
		return 1 === t.nodeType || 9 === t.nodeType || !+t.nodeType
	}
	var R = function(t, e, n, r, i, o, s) {
		var a = 0,
			u = t.length,
			c = null == n;
		if ("object" === k.type(n))
			for (a in i = !0, n) R(t, e, a, n[a], !0, o, s);
		else if (void 0 !== r && (i = !0, k.isFunction(r) || (s = !0), c && (e = s ? (e.call(t, r), null) : (c =
				e,
				function(t, e, n) {
					return c.call(k(t), n)
				})), e))
			for (; a < u; a++) e(t[a], n, s ? r : r.call(t[a], a, e(t[a], n)));
		return i ? t : c ? e.call(t) : u ? e(t[0], n) : o
	};

	function M() {
		this.expando = k.expando + M.uid++
	}
	M.uid = 1, M.prototype = {
		register: function(t, e) {
			e = e || {};
			return t.nodeType ? t[this.expando] = e : Object.defineProperty(t, this.expando, {
				value: e,
				writable: !0,
				configurable: !0
			}), t[this.expando]
		},
		cache: function(t) {
			if (!D(t)) return {};
			var e = t[this.expando];
			return e || (e = {}, D(t) && (t.nodeType ? t[this.expando] = e : Object.defineProperty(t, this
				.expando, {
					value: e,
					configurable: !0
				}))), e
		},
		set: function(t, e, n) {
			var r, i = this.cache(t);
			if ("string" == typeof e) i[e] = n;
			else
				for (r in e) i[r] = e[r];
			return i
		},
		get: function(t, e) {
			return void 0 === e ? this.cache(t) : t[this.expando] && t[this.expando][e]
		},
		access: function(t, e, n) {
			var r;
			return void 0 === e || e && "string" == typeof e && void 0 === n ? void 0 !== (r = this.get(t,
				e)) ? r : this.get(t, k.camelCase(e)) : (this.set(t, e, n), void 0 !== n ? n : e)
		},
		remove: function(t, e) {
			var n, r, i, o = t[this.expando];
			if (void 0 !== o) {
				if (void 0 === e) this.register(t);
				else {
					n = (r = k.isArray(e) ? e.concat(e.map(k.camelCase)) : (i = k.camelCase(e), e in o ? [e,
						i
					] : (r = i) in o ? [r] : r.match(P) || [])).length;
					for (; n--;) delete o[r[n]]
				}
				void 0 !== e && !k.isEmptyObject(o) || (t.nodeType ? t[this.expando] = void 0 : delete t[
					this.expando])
			}
		},
		hasData: function(t) {
			t = t[this.expando];
			return void 0 !== t && !k.isEmptyObject(t)
		}
	};
	var W = new M,
		L = new M,
		F = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,
		H = /[A-Z]/g;

	function B(t, e, n) {
		var r;
		if (void 0 === n && 1 === t.nodeType)
			if (r = "data-" + e.replace(H, "-$&").toLowerCase(), "string" == typeof(n = t.getAttribute(r))) {
				try {
					n = "true" === n || "false" !== n && ("null" === n ? null : +n + "" === n ? +n : F.test(n) ? k
						.parseJSON(n) : n)
				} catch (t) {}
				L.set(t, e, n)
			} else n = void 0;
		return n
	}
	k.extend({
		hasData: function(t) {
			return L.hasData(t) || W.hasData(t)
		},
		data: function(t, e, n) {
			return L.access(t, e, n)
		},
		removeData: function(t, e) {
			L.remove(t, e)
		},
		_data: function(t, e, n) {
			return W.access(t, e, n)
		},
		_removeData: function(t, e) {
			W.remove(t, e)
		}
	}), k.fn.extend({
		data: function(r, t) {
			var e, n, i, o = this[0],
				s = o && o.attributes;
			if (void 0 !== r) return "object" == typeof r ? this.each(function() {
				L.set(this, r)
			}) : R(this, function(e) {
				var t, n;
				return o && void 0 === e ? void 0 !== (t = L.get(o, r) || L.get(o, r
					.replace(H, "-$&").toLowerCase())) ? t : (n = k.camelCase(r),
					void 0 !== (t = L.get(o, n)) ? t : void 0 !== (t = B(o, n,
					void 0)) ? t : void 0) : (n = k.camelCase(r), void this.each(
					function() {
						var t = L.get(this, n);
						L.set(this, n, e), -1 < r.indexOf("-") && void 0 !== t && L
							.set(this, r, e)
					}))
			}, null, t, 1 < arguments.length, null, !0);
			if (this.length && (i = L.get(o), 1 === o.nodeType && !W.get(o, "hasDataAttrs"))) {
				for (e = s.length; e--;) s[e] && (0 === (n = s[e].name).indexOf("data-") && (n = k
					.camelCase(n.slice(5)), B(o, n, i[n])));
				W.set(o, "hasDataAttrs", !0)
			}
			return i
		},
		removeData: function(t) {
			return this.each(function() {
				L.remove(this, t)
			})
		}
	}), k.extend({
		queue: function(t, e, n) {
			var r;
			return t ? (e = (e || "fx") + "queue", r = W.get(t, e), n && (!r || k.isArray(n) ? r = W
				.access(t, e, k.makeArray(n)) : r.push(n)), r || []) : void 0
		},
		dequeue: function(t, e) {
			e = e || "fx";
			var n = k.queue(t, e),
				r = n.length,
				i = n.shift(),
				o = k._queueHooks(t, e);
			"inprogress" === i && (i = n.shift(), r--), i && ("fx" === e && n.unshift("inprogress"),
				delete o.stop, i.call(t, function() {
					k.dequeue(t, e)
				}, o)), !r && o && o.empty.fire()
		},
		_queueHooks: function(t, e) {
			var n = e + "queueHooks";
			return W.get(t, n) || W.access(t, n, {
				empty: k.Callbacks("once memory").add(function() {
					W.remove(t, [e + "queue", n])
				})
			})
		}
	}), k.fn.extend({
		queue: function(e, n) {
			var t = 2;
			return "string" != typeof e && (n = e, e = "fx", t--), arguments.length < t ? k.queue(this[
				0], e) : void 0 === n ? this : this.each(function() {
				var t = k.queue(this, e, n);
				k._queueHooks(this, e), "fx" === e && "inprogress" !== t[0] && k.dequeue(this,
					e)
			})
		},
		dequeue: function(t) {
			return this.each(function() {
				k.dequeue(this, t)
			})
		},
		clearQueue: function(t) {
			return this.queue(t || "fx", [])
		},
		promise: function(t, e) {
			function n() {
				--i || o.resolveWith(s, [s])
			}
			var r, i = 1,
				o = k.Deferred(),
				s = this,
				a = this.length;
			for ("string" != typeof t && (e = t, t = void 0), t = t || "fx"; a--;)(r = W.get(s[a], t +
				"queueHooks")) && r.empty && (i++, r.empty.add(n));
			return n(), o.promise(e)
		}
	});

	function q(t, e) {
		return t = e || t, "none" === k.css(t, "display") || !k.contains(t.ownerDocument, t)
	}
	var s = /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,
		z = new RegExp("^(?:([+-])=|)(" + s + ")([a-z%]*)$", "i"),
		U = ["Top", "Right", "Bottom", "Left"];

	function G(t, e, n, r) {
		var i, o = 1,
			s = 20,
			a = r ? function() {
				return r.cur()
			} : function() {
				return k.css(t, e, "")
			},
			u = a(),
			c = n && n[3] || (k.cssNumber[e] ? "" : "px"),
			l = (k.cssNumber[e] || "px" !== c && +u) && z.exec(k.css(t, e));
		if (l && l[3] !== c)
			for (c = c || l[3], n = n || [], l = +u || 1; o = o || ".5", l /= o, k.style(t, e, l + c), o !== (o =
				a() / u) && 1 !== o && --s;);
		return n && (l = +l || +u || 0, i = n[1] ? l + (n[1] + 1) * n[2] : +n[2], r && (r.unit = c, r.start = l, r
			.end = i)), i
	}
	var V = /^(?:checkbox|radio)$/i,
		$ = /<([\w:-]+)/,
		X = /^$|\/(?:java|ecma)script/i,
		Y = {
			option: [1, "<select multiple='multiple'>", "</select>"],
			thead: [1, "<table>", "</table>"],
			col: [2, "<table><colgroup>", "</colgroup></table>"],
			tr: [2, "<table><tbody>", "</tbody></table>"],
			td: [3, "<table><tbody><tr>", "</tr></tbody></table>"],
			_default: [0, "", ""]
		};

	function K(t, e) {
		var n = void 0 !== t.getElementsByTagName ? t.getElementsByTagName(e || "*") : void 0 !== t
			.querySelectorAll ? t.querySelectorAll(e || "*") : [];
		return void 0 === e || e && k.nodeName(t, e) ? k.merge([t], n) : n
	}

	function Q(t, e) {
		for (var n = 0, r = t.length; n < r; n++) W.set(t[n], "globalEval", !e || W.get(e[n], "globalEval"))
	}
	Y.optgroup = Y.option, Y.tbody = Y.tfoot = Y.colgroup = Y.caption = Y.thead, Y.th = Y.td;
	var J = /<|&#?\w+;/;

	function Z(t, e, n, r, i) {
		for (var o, s, a, u, c, l = e.createDocumentFragment(), h = [], f = 0, p = t.length; f < p; f++)
			if ((o = t[f]) || 0 === o)
				if ("object" === k.type(o)) k.merge(h, o.nodeType ? [o] : o);
				else if (J.test(o)) {
			for (s = s || l.appendChild(e.createElement("div")), a = ($.exec(o) || ["", ""])[1].toLowerCase(), a =
				Y[a] || Y._default, s.innerHTML = a[1] + k.htmlPrefilter(o) + a[2], c = a[0]; c--;) s = s.lastChild;
			k.merge(h, s.childNodes), (s = l.firstChild).textContent = ""
		} else h.push(e.createTextNode(o));
		for (l.textContent = "", f = 0; o = h[f++];)
			if (r && -1 < k.inArray(o, r)) i && i.push(o);
			else if (u = k.contains(o.ownerDocument, o), s = K(l.appendChild(o), "script"), u && Q(s), n)
			for (c = 0; o = s[c++];) X.test(o.type || "") && n.push(o);
		return l
	}
	n = C.createDocumentFragment().appendChild(C.createElement("div")), (p = C.createElement("input")).setAttribute(
			"type", "radio"), p.setAttribute("checked", "checked"), p.setAttribute("name", "t"), n.appendChild(p), m
		.checkClone = n.cloneNode(!0).cloneNode(!0).lastChild.checked, n.innerHTML = "<textarea>x</textarea>", m
		.noCloneChecked = !!n.cloneNode(!0).lastChild.defaultValue;
	var tt = /^key/,
		et = /^(?:mouse|pointer|contextmenu|drag|drop)|click/,
		nt = /^([^.]*)(?:\.(.+)|)/;

	function rt() {
		return !0
	}

	function it() {
		return !1
	}

	function ot() {
		try {
			return C.activeElement
		} catch (t) {}
	}

	function st(t, e, n, r, i, o) {
		var s, a;
		if ("object" == typeof e) {
			for (a in "string" != typeof n && (r = r || n, n = void 0), e) st(t, a, n, r, e[a], o);
			return t
		}
		if (null == r && null == i ? (i = n, r = n = void 0) : null == i && ("string" == typeof n ? (i = r, r =
				void 0) : (i = r, r = n, n = void 0)), !1 === i) i = it;
		else if (!i) return t;
		return 1 === o && (s = i, (i = function(t) {
			return k().off(t), s.apply(this, arguments)
		}).guid = s.guid || (s.guid = k.guid++)), t.each(function() {
			k.event.add(this, e, i, r, n)
		})
	}
	k.event = {
		global: {},
		add: function(e, t, n, r, i) {
			var o, s, a, u, c, l, h, f, p, d = W.get(e);
			if (d)
				for (n.handler && (n = (o = n).handler, i = o.selector), n.guid || (n.guid = k.guid++), (a =
						d.events) || (a = d.events = {}), (s = d.handle) || (s = d.handle = function(t) {
						return void 0 !== k && k.event.triggered !== t.type ? k.event.dispatch.apply(e,
							arguments) : void 0
					}), u = (t = (t || "").match(P) || [""]).length; u--;) h = p = (c = nt.exec(t[u]) ||
				[])[1], f = (c[2] || "").split(".").sort(), h && (l = k.event.special[h] || {}, h = (i ? l
						.delegateType : l.bindType) || h, l = k.event.special[h] || {}, c = k.extend({
						type: h,
						origType: p,
						data: r,
						handler: n,
						guid: n.guid,
						selector: i,
						needsContext: i && k.expr.match.needsContext.test(i),
						namespace: f.join(".")
					}, o), (p = a[h]) || ((p = a[h] = []).delegateCount = 0, l.setup && !1 !== l.setup
						.call(e, r, f, s) || e.addEventListener && e.addEventListener(h, s)), l.add && (
						l.add.call(e, c), c.handler.guid || (c.handler.guid = n.guid)), i ? p.splice(p
						.delegateCount++, 0, c) : p.push(c), k.event.global[h] = !0)
		},
		remove: function(t, e, n, r, i) {
			var o, s, a, u, c, l, h, f, p, d, g, m = W.hasData(t) && W.get(t);
			if (m && (u = m.events)) {
				for (c = (e = (e || "").match(P) || [""]).length; c--;)
					if (p = g = (a = nt.exec(e[c]) || [])[1], d = (a[2] || "").split(".").sort(), p) {
						for (h = k.event.special[p] || {}, f = u[p = (r ? h.delegateType : h.bindType) ||
							p] || [], a = a[2] && new RegExp("(^|\\.)" + d.join("\\.(?:.*\\.|)") +
								"(\\.|$)"), s = o = f.length; o--;) l = f[o], !i && g !== l.origType || n &&
							n.guid !== l.guid || a && !a.test(l.namespace) || r && r !== l.selector && (
								"**" !== r || !l.selector) || (f.splice(o, 1), l.selector && f
								.delegateCount--, h.remove && h.remove.call(t, l));
						s && !f.length && (h.teardown && !1 !== h.teardown.call(t, d, m.handle) || k
							.removeEvent(t, p, m.handle), delete u[p])
					} else
						for (p in u) k.event.remove(t, p + e[c], n, r, !0);
				k.isEmptyObject(u) && W.remove(t, "handle events")
			}
		},
		dispatch: function(t) {
			t = k.event.fix(t);
			var e, n, r, i, o, s = l.call(arguments),
				a = (W.get(this, "events") || {})[t.type] || [],
				u = k.event.special[t.type] || {};
			if ((s[0] = t).delegateTarget = this, !u.preDispatch || !1 !== u.preDispatch.call(this, t)) {
				for (o = k.event.handlers.call(this, t, a), e = 0;
					(r = o[e++]) && !t.isPropagationStopped();)
					for (t.currentTarget = r.elem, n = 0;
						(i = r.handlers[n++]) && !t.isImmediatePropagationStopped();) t.rnamespace && !t
						.rnamespace.test(i.namespace) || (t.handleObj = i, t.data = i.data, void 0 !== (i =
								((k.event.special[i.origType] || {}).handle || i.handler).apply(r.elem, s)
								) && !1 === (t.result = i) && (t.preventDefault(), t.stopPropagation()));
				return u.postDispatch && u.postDispatch.call(this, t), t.result
			}
		},
		handlers: function(t, e) {
			var n, r, i, o, s = [],
				a = e.delegateCount,
				u = t.target;
			if (a && u.nodeType && ("click" !== t.type || isNaN(t.button) || t.button < 1))
				for (; u !== this; u = u.parentNode || this)
					if (1 === u.nodeType && (!0 !== u.disabled || "click" !== t.type)) {
						for (r = [], n = 0; n < a; n++) void 0 === r[i = (o = e[n]).selector + " "] && (r[
							i] = o.needsContext ? -1 < k(i, this).index(u) : k.find(i, this, null, [u])
							.length), r[i] && r.push(o);
						r.length && s.push({
							elem: u,
							handlers: r
						})
					} return a < e.length && s.push({
				elem: this,
				handlers: e.slice(a)
			}), s
		},
		props: "altKey bubbles cancelable ctrlKey currentTarget detail eventPhase metaKey relatedTarget shiftKey target timeStamp view which"
			.split(" "),
		fixHooks: {},
		keyHooks: {
			props: "char charCode key keyCode".split(" "),
			filter: function(t, e) {
				return null == t.which && (t.which = null != e.charCode ? e.charCode : e.keyCode), t
			}
		},
		mouseHooks: {
			props: "button buttons clientX clientY offsetX offsetY pageX pageY screenX screenY toElement".split(
				" "),
			filter: function(t, e) {
				var n, r, i = e.button;
				return null == t.pageX && null != e.clientX && (n = (r = t.target.ownerDocument || C)
					.documentElement, r = r.body, t.pageX = e.clientX + (n && n.scrollLeft || r && r
						.scrollLeft || 0) - (n && n.clientLeft || r && r.clientLeft || 0), t.pageY = e
					.clientY + (n && n.scrollTop || r && r.scrollTop || 0) - (n && n.clientTop || r && r
						.clientTop || 0)), t.which || void 0 === i || (t.which = 1 & i ? 1 : 2 & i ? 3 :
					4 & i ? 2 : 0), t
			}
		},
		fix: function(t) {
			if (t[k.expando]) return t;
			var e, n, r, i = t.type,
				o = t,
				s = this.fixHooks[i];
			for (s || (this.fixHooks[i] = s = et.test(i) ? this.mouseHooks : tt.test(i) ? this.keyHooks :
					{}), r = s.props ? this.props.concat(s.props) : this.props, t = new k.Event(o), e = r
				.length; e--;) t[n = r[e]] = o[n];
			return t.target || (t.target = C), 3 === t.target.nodeType && (t.target = t.target.parentNode),
				s.filter ? s.filter(t, o) : t
		},
		special: {
			load: {
				noBubble: !0
			},
			focus: {
				trigger: function() {
					return this !== ot() && this.focus ? (this.focus(), !1) : void 0
				},
				delegateType: "focusin"
			},
			blur: {
				trigger: function() {
					return this === ot() && this.blur ? (this.blur(), !1) : void 0
				},
				delegateType: "focusout"
			},
			click: {
				trigger: function() {
					return "checkbox" === this.type && this.click && k.nodeName(this, "input") ? (this
						.click(), !1) : void 0
				},
				_default: function(t) {
					return k.nodeName(t.target, "a")
				}
			},
			beforeunload: {
				postDispatch: function(t) {
					void 0 !== t.result && t.originalEvent && (t.originalEvent.returnValue = t.result)
				}
			}
		}
	}, k.removeEvent = function(t, e, n) {
		t.removeEventListener && t.removeEventListener(e, n)
	}, k.Event = function(t, e) {
		return this instanceof k.Event ? (t && t.type ? (this.originalEvent = t, this.type = t.type, this
				.isDefaultPrevented = t.defaultPrevented || void 0 === t.defaultPrevented && !1 === t
				.returnValue ? rt : it) : this.type = t, e && k.extend(this, e), this.timeStamp = t && t
			.timeStamp || k.now(), void(this[k.expando] = !0)) : new k.Event(t, e)
	}, k.Event.prototype = {
		constructor: k.Event,
		isDefaultPrevented: it,
		isPropagationStopped: it,
		isImmediatePropagationStopped: it,
		isSimulated: !1,
		preventDefault: function() {
			var t = this.originalEvent;
			this.isDefaultPrevented = rt, t && !this.isSimulated && t.preventDefault()
		},
		stopPropagation: function() {
			var t = this.originalEvent;
			this.isPropagationStopped = rt, t && !this.isSimulated && t.stopPropagation()
		},
		stopImmediatePropagation: function() {
			var t = this.originalEvent;
			this.isImmediatePropagationStopped = rt, t && !this.isSimulated && t.stopImmediatePropagation(),
				this.stopPropagation()
		}
	}, k.each({
		mouseenter: "mouseover",
		mouseleave: "mouseout",
		pointerenter: "pointerover",
		pointerleave: "pointerout"
	}, function(t, i) {
		k.event.special[t] = {
			delegateType: i,
			bindType: i,
			handle: function(t) {
				var e, n = t.relatedTarget,
					r = t.handleObj;
				return n && (n === this || k.contains(this, n)) || (t.type = r.origType, e = r
					.handler.apply(this, arguments), t.type = i), e
			}
		}
	}), k.fn.extend({
		on: function(t, e, n, r) {
			return st(this, t, e, n, r)
		},
		one: function(t, e, n, r) {
			return st(this, t, e, n, r, 1)
		},
		off: function(t, e, n) {
			var r, i;
			if (t && t.preventDefault && t.handleObj) return r = t.handleObj, k(t.delegateTarget).off(r
					.namespace ? r.origType + "." + r.namespace : r.origType, r.selector, r.handler
					), this;
			if ("object" != typeof t) return !1 !== e && "function" != typeof e || (n = e, e = void 0),
				!1 === n && (n = it), this.each(function() {
					k.event.remove(this, t, n, e)
				});
			for (i in t) this.off(i, e, t[i]);
			return this
		}
	});
	var at = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:-]+)[^>]*)\/>/gi,
		ut = /<script|<style|<link/i,
		ct = /checked\s*(?:[^=]|=\s*.checked.)/i,
		lt = /^true\/(.*)/,
		ht = /^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;

	function ft(t, e) {
		return k.nodeName(t, "table") && k.nodeName(11 !== e.nodeType ? e : e.firstChild, "tr") ? t
			.getElementsByTagName("tbody")[0] || t.appendChild(t.ownerDocument.createElement("tbody")) : t
	}

	function pt(t) {
		return t.type = (null !== t.getAttribute("type")) + "/" + t.type, t
	}

	function dt(t) {
		var e = lt.exec(t.type);
		return e ? t.type = e[1] : t.removeAttribute("type"), t
	}

	function gt(t, e) {
		var n, r, i, o, s, a;
		if (1 === e.nodeType) {
			if (W.hasData(t) && (o = W.access(t), s = W.set(e, o), a = o.events))
				for (i in delete s.handle, s.events = {}, a)
					for (n = 0, r = a[i].length; n < r; n++) k.event.add(e, i, a[i][n]);
			L.hasData(t) && (t = L.access(t), t = k.extend({}, t), L.set(e, t))
		}
	}

	function mt(n, r, i, o) {
		r = g.apply([], r);
		var t, e, s, a, u, c, l = 0,
			h = n.length,
			f = h - 1,
			p = r[0],
			d = k.isFunction(p);
		if (d || 1 < h && "string" == typeof p && !m.checkClone && ct.test(p)) return n.each(function(t) {
			var e = n.eq(t);
			d && (r[0] = p.call(this, t, e.html())), mt(e, r, i, o)
		});
		if (h && (e = (t = Z(r, n[0].ownerDocument, !1, n, o)).firstChild, 1 === t.childNodes.length && (t = e),
				e || o)) {
			for (a = (s = k.map(K(t, "script"), pt)).length; l < h; l++) u = t, l !== f && (u = k.clone(u, !0, !0),
				a && k.merge(s, K(u, "script"))), i.call(n[l], u, l);
			if (a)
				for (c = s[s.length - 1].ownerDocument, k.map(s, dt), l = 0; l < a; l++) u = s[l], X.test(u.type ||
					"") && !W.access(u, "globalEval") && k.contains(c, u) && (u.src ? k._evalUrl && k._evalUrl(u
					.src) : k.globalEval(u.textContent.replace(ht, "")))
		}
		return n
	}

	function vt(t, e, n) {
		for (var r, i = e ? k.filter(e, t) : t, o = 0; null != (r = i[o]); o++) n || 1 !== r.nodeType || k
			.cleanData(K(r)), r.parentNode && (n && k.contains(r.ownerDocument, r) && Q(K(r, "script")), r
				.parentNode.removeChild(r));
		return t
	}
	k.extend({
		htmlPrefilter: function(t) {
			return t.replace(at, "<$1></$2>")
		},
		clone: function(t, e, n) {
			var r, i, o, s, a, u, c, l = t.cloneNode(!0),
				h = k.contains(t.ownerDocument, t);
			if (!(m.noCloneChecked || 1 !== t.nodeType && 11 !== t.nodeType || k.isXMLDoc(t)))
				for (s = K(l), r = 0, i = (o = K(t)).length; r < i; r++) a = o[r], u = s[r], c = void 0,
					"input" === (c = u.nodeName.toLowerCase()) && V.test(a.type) ? u.checked = a
					.checked : "input" !== c && "textarea" !== c || (u.defaultValue = a.defaultValue);
			if (e)
				if (n)
					for (o = o || K(t), s = s || K(l), r = 0, i = o.length; r < i; r++) gt(o[r], s[r]);
				else gt(t, l);
			return 0 < (s = K(l, "script")).length && Q(s, !h && K(t, "script")), l
		},
		cleanData: function(t) {
			for (var e, n, r, i = k.event.special, o = 0; void 0 !== (n = t[o]); o++)
				if (D(n)) {
					if (e = n[W.expando]) {
						if (e.events)
							for (r in e.events) i[r] ? k.event.remove(n, r) : k.removeEvent(n, r, e
								.handle);
						n[W.expando] = void 0
					}
					n[L.expando] && (n[L.expando] = void 0)
				}
		}
	}), k.fn.extend({
		domManip: mt,
		detach: function(t) {
			return vt(this, t, !0)
		},
		remove: function(t) {
			return vt(this, t)
		},
		text: function(t) {
			return R(this, function(t) {
				return void 0 === t ? k.text(this) : this.empty().each(function() {
					1 !== this.nodeType && 11 !== this.nodeType && 9 !== this
						.nodeType || (this.textContent = t)
				})
			}, null, t, arguments.length)
		},
		append: function() {
			return mt(this, arguments, function(t) {
				1 !== this.nodeType && 11 !== this.nodeType && 9 !== this.nodeType || ft(this,
					t).appendChild(t)
			})
		},
		prepend: function() {
			return mt(this, arguments, function(t) {
				var e;
				1 !== this.nodeType && 11 !== this.nodeType && 9 !== this.nodeType || (e = ft(
					this, t)).insertBefore(t, e.firstChild)
			})
		},
		before: function() {
			return mt(this, arguments, function(t) {
				this.parentNode && this.parentNode.insertBefore(t, this)
			})
		},
		after: function() {
			return mt(this, arguments, function(t) {
				this.parentNode && this.parentNode.insertBefore(t, this.nextSibling)
			})
		},
		empty: function() {
			for (var t, e = 0; null != (t = this[e]); e++) 1 === t.nodeType && (k.cleanData(K(t, !1)), t
				.textContent = "");
			return this
		},
		clone: function(t, e) {
			return t = null != t && t, e = null == e ? t : e, this.map(function() {
				return k.clone(this, t, e)
			})
		},
		html: function(t) {
			return R(this, function(t) {
				var e = this[0] || {},
					n = 0,
					r = this.length;
				if (void 0 === t && 1 === e.nodeType) return e.innerHTML;
				if ("string" == typeof t && !ut.test(t) && !Y[($.exec(t) || ["", ""])[1]
						.toLowerCase()]) {
					t = k.htmlPrefilter(t);
					try {
						for (; n < r; n++) 1 === (e = this[n] || {}).nodeType && (k.cleanData(K(
							e, !1)), e.innerHTML = t);
						e = 0
					} catch (t) {}
				}
				e && this.empty().append(t)
			}, null, t, arguments.length)
		},
		replaceWith: function() {
			var n = [];
			return mt(this, arguments, function(t) {
				var e = this.parentNode;
				k.inArray(this, n) < 0 && (k.cleanData(K(this)), e && e.replaceChild(t, this))
			}, n)
		}
	}), k.each({
		appendTo: "append",
		prependTo: "prepend",
		insertBefore: "before",
		insertAfter: "after",
		replaceAll: "replaceWith"
	}, function(t, s) {
		k.fn[t] = function(t) {
			for (var e, n = [], r = k(t), i = r.length - 1, o = 0; o <= i; o++) e = o === i ? this :
				this.clone(!0), k(r[o])[s](e), a.apply(n, e.get());
			return this.pushStack(n)
		}
	});
	var yt, bt = {
		HTML: "block",
		BODY: "block"
	};

	function wt(t, e) {
		t = k(e.createElement(t)).appendTo(e.body), e = k.css(t[0], "display");
		return t.detach(), e
	}

	function _t(t) {
		var e = C,
			n = bt[t];
		return n || ("none" !== (n = wt(t, e)) && n || ((e = (yt = (yt || k(
				"<iframe frameborder='0' width='0' height='0'/>")).appendTo(e.documentElement))[0]
			.contentDocument).write(), e.close(), n = wt(t, e), yt.detach()), bt[t] = n), n
	}

	function xt(t, e, n, r) {
		var i, o = {};
		for (i in e) o[i] = t.style[i], t.style[i] = e[i];
		for (i in r = n.apply(t, r || []), e) t.style[i] = o[i];
		return r
	}
	var Ct, kt, St, Ot, Et, Tt, At = /^margin/,
		It = new RegExp("^(" + s + ")(?!px)[a-z%]+$", "i"),
		jt = function(t) {
			var e = t.ownerDocument.defaultView;
			return e && e.opener || (e = x), e.getComputedStyle(t)
		},
		Pt = C.documentElement;

	function Nt() {
		Tt.style.cssText =
			"-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;position:relative;display:block;margin:auto;border:1px;padding:1px;top:1%;width:50%",
			Tt.innerHTML = "", Pt.appendChild(Et);
		var t = x.getComputedStyle(Tt);
		Ct = "1%" !== t.top, Ot = "2px" === t.marginLeft, kt = "4px" === t.width, Tt.style.marginRight = "50%", St =
			"4px" === t.marginRight, Pt.removeChild(Et)
	}

	function Dt(t, e, n) {
		var r, i, o = t.style;
		return "" !== (i = (n = n || jt(t)) ? n.getPropertyValue(e) || n[e] : void 0) && void 0 !== i || k.contains(
				t.ownerDocument, t) || (i = k.style(t, e)), n && !m.pixelMarginRight() && It.test(i) && At.test(
			e) && (r = o.width, t = o.minWidth, e = o.maxWidth, o.minWidth = o.maxWidth = o.width = i, i = n.width,
				o.width = r, o.minWidth = t, o.maxWidth = e), void 0 !== i ? i + "" : i
	}

	function Rt(t, e) {
		return {
			get: function() {
				return t() ? void delete this.get : (this.get = e).apply(this, arguments)
			}
		}
	}
	Et = C.createElement("div"), (Tt = C.createElement("div")).style && (Tt.style.backgroundClip = "content-box", Tt
		.cloneNode(!0).style.backgroundClip = "", m.clearCloneStyle = "content-box" === Tt.style.backgroundClip,
		Et.style.cssText =
		"border:0;width:8px;height:0;top:0;left:-9999px;padding:0;margin-top:1px;position:absolute", Et
		.appendChild(Tt), k.extend(m, {
			pixelPosition: function() {
				return Nt(), Ct
			},
			boxSizingReliable: function() {
				return null == kt && Nt(), kt
			},
			pixelMarginRight: function() {
				return null == kt && Nt(), St
			},
			reliableMarginLeft: function() {
				return null == kt && Nt(), Ot
			},
			reliableMarginRight: function() {
				var t, e = Tt.appendChild(C.createElement("div"));
				return e.style.cssText = Tt.style.cssText =
					"-webkit-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:0",
					e.style.marginRight = e.style.width = "0", Tt.style.width = "1px", Pt.appendChild(
						Et), t = !parseFloat(x.getComputedStyle(e).marginRight), Pt.removeChild(Et), Tt
					.removeChild(e), t
			}
		}));
	var Mt = /^(none|table(?!-c[ea]).+)/,
		Wt = {
			position: "absolute",
			visibility: "hidden",
			display: "block"
		},
		Lt = {
			letterSpacing: "0",
			fontWeight: "400"
		},
		Ft = ["Webkit", "O", "Moz", "ms"],
		Ht = C.createElement("div").style;

	function Bt(t) {
		if (t in Ht) return t;
		for (var e = t[0].toUpperCase() + t.slice(1), n = Ft.length; n--;)
			if ((t = Ft[n] + e) in Ht) return t
	}

	function qt(t, e, n) {
		var r = z.exec(e);
		return r ? Math.max(0, r[2] - (n || 0)) + (r[3] || "px") : e
	}

	function zt(t, e, n, r, i) {
		for (var o = n === (r ? "border" : "content") ? 4 : "width" === e ? 1 : 0, s = 0; o < 4; o += 2)
			"margin" === n && (s += k.css(t, n + U[o], !0, i)), r ? ("content" === n && (s -= k.css(t, "padding" +
				U[o], !0, i)), "margin" !== n && (s -= k.css(t, "border" + U[o] + "Width", !0, i))) : (s += k.css(t,
				"padding" + U[o], !0, i), "padding" !== n && (s += k.css(t, "border" + U[o] + "Width", !0, i)));
		return s
	}

	function Ut(t, e, n) {
		var r = !0,
			i = "width" === e ? t.offsetWidth : t.offsetHeight,
			o = jt(t),
			s = "border-box" === k.css(t, "boxSizing", !1, o);
		if (i <= 0 || null == i) {
			if (((i = Dt(t, e, o)) < 0 || null == i) && (i = t.style[e]), It.test(i)) return i;
			r = s && (m.boxSizingReliable() || i === t.style[e]), i = parseFloat(i) || 0
		}
		return i + zt(t, e, n || (s ? "border" : "content"), r, o) + "px"
	}

	function Gt(t, e) {
		for (var n, r, i, o = [], s = 0, a = t.length; s < a; s++)(r = t[s]).style && (o[s] = W.get(r,
			"olddisplay"), n = r.style.display, e ? (o[s] || "none" !== n || (r.style.display = ""), "" === r
				.style.display && q(r) && (o[s] = W.access(r, "olddisplay", _t(r.nodeName)))) : (i = q(r),
				"none" === n && i || W.set(r, "olddisplay", i ? n : k.css(r, "display"))));
		for (s = 0; s < a; s++)(r = t[s]).style && (e && "none" !== r.style.display && "" !== r.style.display || (r
			.style.display = e ? o[s] || "" : "none"));
		return t
	}

	function Vt(t, e, n, r, i) {
		return new Vt.prototype.init(t, e, n, r, i)
	}
	k.extend({
		cssHooks: {
			opacity: {
				get: function(t, e) {
					if (e) {
						t = Dt(t, "opacity");
						return "" === t ? "1" : t
					}
				}
			}
		},
		cssNumber: {
			animationIterationCount: !0,
			columnCount: !0,
			fillOpacity: !0,
			flexGrow: !0,
			flexShrink: !0,
			fontWeight: !0,
			lineHeight: !0,
			opacity: !0,
			order: !0,
			orphans: !0,
			widows: !0,
			zIndex: !0,
			zoom: !0
		},
		cssProps: {
			float: "cssFloat"
		},
		style: function(t, e, n, r) {
			if (t && 3 !== t.nodeType && 8 !== t.nodeType && t.style) {
				var i, o, s, a = k.camelCase(e),
					u = t.style;
				return e = k.cssProps[a] || (k.cssProps[a] = Bt(a) || a), s = k.cssHooks[e] || k
					.cssHooks[a], void 0 === n ? s && "get" in s && void 0 !== (i = s.get(t, !1, r)) ?
					i : u[e] : ("string" === (o = typeof n) && (i = z.exec(n)) && i[1] && (n = G(t, e,
						i), o = "number"), void(null != n && n == n && ("number" === o && (n += i &&
							i[3] || (k.cssNumber[a] ? "" : "px")), m.clearCloneStyle || "" !==
						n || 0 !== e.indexOf("background") || (u[e] = "inherit"), s && "set" in
						s && void 0 === (n = s.set(t, n, r)) || (u[e] = n))))
			}
		},
		css: function(t, e, n, r) {
			var i, o = k.camelCase(e);
			return e = k.cssProps[o] || (k.cssProps[o] = Bt(o) || o), (o = k.cssHooks[e] || k.cssHooks[
					o]) && "get" in o && (i = o.get(t, !0, n)), void 0 === i && (i = Dt(t, e, r)),
				"normal" === i && e in Lt && (i = Lt[e]), "" === n || n ? (e = parseFloat(i), !0 ===
					n || isFinite(e) ? e || 0 : i) : i
		}
	}), k.each(["height", "width"], function(t, o) {
		k.cssHooks[o] = {
			get: function(t, e, n) {
				return e ? Mt.test(k.css(t, "display")) && 0 === t.offsetWidth ? xt(t, Wt,
				function() {
					return Ut(t, o, n)
				}) : Ut(t, o, n) : void 0
			},
			set: function(t, e, n) {
				var r, i = n && jt(t),
					i = n && zt(t, o, n, "border-box" === k.css(t, "boxSizing", !1, i), i);
				return i && (r = z.exec(e)) && "px" !== (r[3] || "px") && (t.style[o] = e, e = k
					.css(t, o)), qt(0, e, i)
			}
		}
	}), k.cssHooks.marginLeft = Rt(m.reliableMarginLeft, function(t, e) {
		return e ? (parseFloat(Dt(t, "marginLeft")) || t.getBoundingClientRect().left - xt(t, {
			marginLeft: 0
		}, function() {
			return t.getBoundingClientRect().left
		})) + "px" : void 0
	}), k.cssHooks.marginRight = Rt(m.reliableMarginRight, function(t, e) {
		return e ? xt(t, {
			display: "inline-block"
		}, Dt, [t, "marginRight"]) : void 0
	}), k.each({
		margin: "",
		padding: "",
		border: "Width"
	}, function(i, o) {
		k.cssHooks[i + o] = {
			expand: function(t) {
				for (var e = 0, n = {}, r = "string" == typeof t ? t.split(" ") : [t]; e < 4; e++)
					n[i + U[e] + o] = r[e] || r[e - 2] || r[0];
				return n
			}
		}, At.test(i) || (k.cssHooks[i + o].set = qt)
	}), k.fn.extend({
		css: function(t, e) {
			return R(this, function(t, e, n) {
				var r, i, o = {},
					s = 0;
				if (k.isArray(e)) {
					for (r = jt(t), i = e.length; s < i; s++) o[e[s]] = k.css(t, e[s], !1, r);
					return o
				}
				return void 0 !== n ? k.style(t, e, n) : k.css(t, e)
			}, t, e, 1 < arguments.length)
		},
		show: function() {
			return Gt(this, !0)
		},
		hide: function() {
			return Gt(this)
		},
		toggle: function(t) {
			return "boolean" == typeof t ? t ? this.show() : this.hide() : this.each(function() {
				q(this) ? k(this).show() : k(this).hide()
			})
		}
	}), (k.Tween = Vt).prototype = {
		constructor: Vt,
		init: function(t, e, n, r, i, o) {
			this.elem = t, this.prop = n, this.easing = i || k.easing._default, this.options = e, this
				.start = this.now = this.cur(), this.end = r, this.unit = o || (k.cssNumber[n] ? "" : "px")
		},
		cur: function() {
			var t = Vt.propHooks[this.prop];
			return (t && t.get ? t : Vt.propHooks._default).get(this)
		},
		run: function(t) {
			var e, n = Vt.propHooks[this.prop];
			return this.options.duration ? this.pos = e = k.easing[this.easing](t, this.options.duration *
					t, 0, 1, this.options.duration) : this.pos = e = t, this.now = (this.end - this.start) *
				e + this.start, this.options.step && this.options.step.call(this.elem, this.now, this), (
					n && n.set ? n : Vt.propHooks._default).set(this), this
		}
	}, Vt.prototype.init.prototype = Vt.prototype, Vt.propHooks = {
		_default: {
			get: function(t) {
				return 1 !== t.elem.nodeType || null != t.elem[t.prop] && null == t.elem.style[t.prop] ? t
					.elem[t.prop] : (t = k.css(t.elem, t.prop, "")) && "auto" !== t ? t : 0
			},
			set: function(t) {
				k.fx.step[t.prop] ? k.fx.step[t.prop](t) : 1 !== t.elem.nodeType || null == t.elem.style[k
					.cssProps[t.prop]] && !k.cssHooks[t.prop] ? t.elem[t.prop] = t.now : k.style(t.elem,
					t.prop, t.now + t.unit)
			}
		}
	}, Vt.propHooks.scrollTop = Vt.propHooks.scrollLeft = {
		set: function(t) {
			t.elem.nodeType && t.elem.parentNode && (t.elem[t.prop] = t.now)
		}
	}, k.easing = {
		linear: function(t) {
			return t
		},
		swing: function(t) {
			return .5 - Math.cos(t * Math.PI) / 2
		},
		_default: "swing"
	}, k.fx = Vt.prototype.init, k.fx.step = {};
	var $t, Xt, Yt = /^(?:toggle|show|hide)$/,
		Kt = /queueHooks$/;

	function Qt() {
		return x.setTimeout(function() {
			$t = void 0
		}), $t = k.now()
	}

	function Jt(t, e) {
		var n, r = 0,
			i = {
				height: t
			};
		for (e = e ? 1 : 0; r < 4; r += 2 - e) i["margin" + (n = U[r])] = i["padding" + n] = t;
		return e && (i.opacity = i.width = t), i
	}

	function Zt(t, e, n) {
		for (var r, i = (te.tweeners[e] || []).concat(te.tweeners["*"]), o = 0, s = i.length; o < s; o++)
			if (r = i[o].call(n, e, t)) return r
	}

	function te(i, t, e) {
		var n, o, r = 0,
			s = te.prefilters.length,
			a = k.Deferred().always(function() {
				delete u.elem
			}),
			u = function() {
				if (o) return !1;
				for (var t = $t || Qt(), t = Math.max(0, c.startTime + c.duration - t), e = 1 - (t / c.duration ||
						0), n = 0, r = c.tweens.length; n < r; n++) c.tweens[n].run(e);
				return a.notifyWith(i, [c, e, t]), e < 1 && r ? t : (a.resolveWith(i, [c]), !1)
			},
			c = a.promise({
				elem: i,
				props: k.extend({}, t),
				opts: k.extend(!0, {
					specialEasing: {},
					easing: k.easing._default
				}, e),
				originalProperties: t,
				originalOptions: e,
				startTime: $t || Qt(),
				duration: e.duration,
				tweens: [],
				createTween: function(t, e) {
					t = k.Tween(i, c.opts, t, e, c.opts.specialEasing[t] || c.opts.easing);
					return c.tweens.push(t), t
				},
				stop: function(t) {
					var e = 0,
						n = t ? c.tweens.length : 0;
					if (o) return this;
					for (o = !0; e < n; e++) c.tweens[e].run(1);
					return t ? (a.notifyWith(i, [c, 1, 0]), a.resolveWith(i, [c, t])) : a.rejectWith(i, [c,
						t
					]), this
				}
			}),
			l = c.props;
		for (function(t, e) {
				var n, r, i, o, s;
				for (n in t)
					if (r = k.camelCase(n), i = e[r], o = t[n], k.isArray(o) && (i = o[1], o = t[n] = o[0]), n !==
						r && (t[r] = o, delete t[n]), s = k.cssHooks[r], s && "expand" in s)
						for (n in o = s.expand(o), delete t[r], o) n in t || (t[n] = o[n], e[n] = i);
					else e[r] = i
			}(l, c.opts.specialEasing); r < s; r++)
			if (n = te.prefilters[r].call(c, i, l, c.opts)) return k.isFunction(n.stop) && (k._queueHooks(c.elem, c
				.opts.queue).stop = k.proxy(n.stop, n)), n;
		return k.map(l, Zt, c), k.isFunction(c.opts.start) && c.opts.start.call(i, c), k.fx.timer(k.extend(u, {
			elem: i,
			anim: c,
			queue: c.opts.queue
		})), c.progress(c.opts.progress).done(c.opts.done, c.opts.complete).fail(c.opts.fail).always(c.opts
			.always)
	}
	k.Animation = k.extend(te, {
			tweeners: {
				"*": [function(t, e) {
					var n = this.createTween(t, e);
					return G(n.elem, t, z.exec(e), n), n
				}]
			},
			tweener: function(t, e) {
				for (var n, r = 0, i = (t = k.isFunction(t) ? (e = t, ["*"]) : t.match(P)).length; r <
					i; r++) n = t[r], te.tweeners[n] = te.tweeners[n] || [], te.tweeners[n].unshift(e)
			},
			prefilters: [function(e, t, n) {
				var r, i, o, s, a, u, c, l = this,
					h = {},
					f = e.style,
					p = e.nodeType && q(e),
					d = W.get(e, "fxshow");
				for (r in n.queue || (null == (a = k._queueHooks(e, "fx")).unqueued && (a.unqueued = 0,
						u = a.empty.fire, a.empty.fire = function() {
							a.unqueued || u()
						}), a.unqueued++, l.always(function() {
						l.always(function() {
							a.unqueued--, k.queue(e, "fx").length || a.empty.fire()
						})
					})), 1 === e.nodeType && ("height" in t || "width" in t) && (n.overflow = [f
						.overflow, f.overflowX, f.overflowY
					], "inline" === ("none" === (c = k.css(e, "display")) ? W.get(e,
						"olddisplay") || _t(e.nodeName) : c) && "none" === k.css(e, "float") && (f
						.display = "inline-block")), n.overflow && (f.overflow = "hidden", l.always(
						function() {
							f.overflow = n.overflow[0], f.overflowX = n.overflow[1], f.overflowY = n
								.overflow[2]
						})), t)
					if (i = t[r], Yt.exec(i)) {
						if (delete t[r], o = o || "toggle" === i, i === (p ? "hide" : "show")) {
							if ("show" !== i || !d || void 0 === d[r]) continue;
							p = !0
						}
						h[r] = d && d[r] || k.style(e, r)
					} else c = void 0;
				if (k.isEmptyObject(h)) "inline" === ("none" === c ? _t(e.nodeName) : c) && (f.display =
					c);
				else
					for (r in d ? "hidden" in d && (p = d.hidden) : d = W.access(e, "fxshow", {}), o &&
						(d.hidden = !p), p ? k(e).show() : l.done(function() {
							k(e).hide()
						}), l.done(function() {
							for (var t in W.remove(e, "fxshow"), h) k.style(e, t, h[t])
						}), h) s = Zt(p ? d[r] : 0, r, l), r in d || (d[r] = s.start, p && (s.end = s
						.start, s.start = "width" === r || "height" === r ? 1 : 0))
			}],
			prefilter: function(t, e) {
				e ? te.prefilters.unshift(t) : te.prefilters.push(t)
			}
		}), k.speed = function(t, e, n) {
			var r = t && "object" == typeof t ? k.extend({}, t) : {
				complete: n || !n && e || k.isFunction(t) && t,
				duration: t,
				easing: n && e || e && !k.isFunction(e) && e
			};
			return r.duration = k.fx.off ? 0 : "number" == typeof r.duration ? r.duration : r.duration in k.fx
				.speeds ? k.fx.speeds[r.duration] : k.fx.speeds._default, null != r.queue && !0 !== r.queue || (r
					.queue = "fx"), r.old = r.complete, r.complete = function() {
					k.isFunction(r.old) && r.old.call(this), r.queue && k.dequeue(this, r.queue)
				}, r
		}, k.fn.extend({
			fadeTo: function(t, e, n, r) {
				return this.filter(q).css("opacity", 0).show().end().animate({
					opacity: e
				}, t, n, r)
			},
			animate: function(e, t, n, r) {
				var i = k.isEmptyObject(e),
					o = k.speed(t, n, r),
					r = function() {
						var t = te(this, k.extend({}, e), o);
						(i || W.get(this, "finish")) && t.stop(!0)
					};
				return r.finish = r, i || !1 === o.queue ? this.each(r) : this.queue(o.queue, r)
			},
			stop: function(i, t, o) {
				function s(t) {
					var e = t.stop;
					delete t.stop, e(o)
				}
				return "string" != typeof i && (o = t, t = i, i = void 0), t && !1 !== i && this.queue(i ||
					"fx", []), this.each(function() {
					var t = !0,
						e = null != i && i + "queueHooks",
						n = k.timers,
						r = W.get(this);
					if (e) r[e] && r[e].stop && s(r[e]);
					else
						for (e in r) r[e] && r[e].stop && Kt.test(e) && s(r[e]);
					for (e = n.length; e--;) n[e].elem !== this || null != i && n[e].queue !== i ||
						(n[e].anim.stop(o), t = !1, n.splice(e, 1));
					!t && o || k.dequeue(this, i)
				})
			},
			finish: function(s) {
				return !1 !== s && (s = s || "fx"), this.each(function() {
					var t, e = W.get(this),
						n = e[s + "queue"],
						r = e[s + "queueHooks"],
						i = k.timers,
						o = n ? n.length : 0;
					for (e.finish = !0, k.queue(this, s, []), r && r.stop && r.stop.call(this, !0),
						t = i.length; t--;) i[t].elem === this && i[t].queue === s && (i[t].anim
						.stop(!0), i.splice(t, 1));
					for (t = 0; t < o; t++) n[t] && n[t].finish && n[t].finish.call(this);
					delete e.finish
				})
			}
		}), k.each(["toggle", "show", "hide"], function(t, r) {
			var i = k.fn[r];
			k.fn[r] = function(t, e, n) {
				return null == t || "boolean" == typeof t ? i.apply(this, arguments) : this.animate(Jt(r, !
					0), t, e, n)
			}
		}), k.each({
			slideDown: Jt("show"),
			slideUp: Jt("hide"),
			slideToggle: Jt("toggle"),
			fadeIn: {
				opacity: "show"
			},
			fadeOut: {
				opacity: "hide"
			},
			fadeToggle: {
				opacity: "toggle"
			}
		}, function(t, r) {
			k.fn[t] = function(t, e, n) {
				return this.animate(r, t, e, n)
			}
		}), k.timers = [], k.fx.tick = function() {
			var t, e = 0,
				n = k.timers;
			for ($t = k.now(); e < n.length; e++)(t = n[e])() || n[e] !== t || n.splice(e--, 1);
			n.length || k.fx.stop(), $t = void 0
		}, k.fx.timer = function(t) {
			k.timers.push(t), t() ? k.fx.start() : k.timers.pop()
		}, k.fx.interval = 13, k.fx.start = function() {
			Xt = Xt || x.setInterval(k.fx.tick, k.fx.interval)
		}, k.fx.stop = function() {
			x.clearInterval(Xt), Xt = null
		}, k.fx.speeds = {
			slow: 600,
			fast: 200,
			_default: 400
		}, k.fn.delay = function(r, t) {
			return r = k.fx && k.fx.speeds[r] || r, t = t || "fx", this.queue(t, function(t, e) {
				var n = x.setTimeout(t, r);
				e.stop = function() {
					x.clearTimeout(n)
				}
			})
		}, p = C.createElement("input"), n = C.createElement("select"), s = n.appendChild(C.createElement(
		"option")), p.type = "checkbox", m.checkOn = "" !== p.value, m.optSelected = s.selected, n.disabled = !0, m
		.optDisabled = !s.disabled, (p = C.createElement("input")).value = "t", p.type = "radio", m.radioValue =
		"t" === p.value;
	var ee, ne = k.expr.attrHandle;
	k.fn.extend({
		attr: function(t, e) {
			return R(this, k.attr, t, e, 1 < arguments.length)
		},
		removeAttr: function(t) {
			return this.each(function() {
				k.removeAttr(this, t)
			})
		}
	}), k.extend({
		attr: function(t, e, n) {
			var r, i, o = t.nodeType;
			if (3 !== o && 8 !== o && 2 !== o) return void 0 === t.getAttribute ? k.prop(t, e, n) : (
				1 === o && k.isXMLDoc(t) || (e = e.toLowerCase(), i = k.attrHooks[e] || (k.expr
					.match.bool.test(e) ? ee : void 0)), void 0 !== n ? null === n ? void k
				.removeAttr(t, e) : i && "set" in i && void 0 !== (r = i.set(t, n, e)) ? r : (t
					.setAttribute(e, n + ""), n) : i && "get" in i && null !== (r = i.get(t,
				e)) ? r : null == (r = k.find.attr(t, e)) ? void 0 : r)
		},
		attrHooks: {
			type: {
				set: function(t, e) {
					if (!m.radioValue && "radio" === e && k.nodeName(t, "input")) {
						var n = t.value;
						return t.setAttribute("type", e), n && (t.value = n), e
					}
				}
			}
		},
		removeAttr: function(t, e) {
			var n, r, i = 0,
				o = e && e.match(P);
			if (o && 1 === t.nodeType)
				for (; n = o[i++];) r = k.propFix[n] || n, k.expr.match.bool.test(n) && (t[r] = !1), t
					.removeAttribute(n)
		}
	}), ee = {
		set: function(t, e, n) {
			return !1 === e ? k.removeAttr(t, n) : t.setAttribute(n, n), n
		}
	}, k.each(k.expr.match.bool.source.match(/\w+/g), function(t, e) {
		var o = ne[e] || k.find.attr;
		ne[e] = function(t, e, n) {
			var r, i;
			return n || (i = ne[e], ne[e] = r, r = null != o(t, e, n) ? e.toLowerCase() : null, ne[e] =
				i), r
		}
	});
	var re = /^(?:input|select|textarea|button)$/i,
		ie = /^(?:a|area)$/i;
	k.fn.extend({
		prop: function(t, e) {
			return R(this, k.prop, t, e, 1 < arguments.length)
		},
		removeProp: function(t) {
			return this.each(function() {
				delete this[k.propFix[t] || t]
			})
		}
	}), k.extend({
		prop: function(t, e, n) {
			var r, i, o = t.nodeType;
			if (3 !== o && 8 !== o && 2 !== o) return 1 === o && k.isXMLDoc(t) || (e = k.propFix[e] ||
					e, i = k.propHooks[e]), void 0 !== n ? i && "set" in i && void 0 !== (r = i.set(
					t, n, e)) ? r : t[e] = n : i && "get" in i && null !== (r = i.get(t, e)) ? r :
				t[e]
		},
		propHooks: {
			tabIndex: {
				get: function(t) {
					var e = k.find.attr(t, "tabindex");
					return e ? parseInt(e, 10) : re.test(t.nodeName) || ie.test(t.nodeName) && t.href ?
						0 : -1
				}
			}
		},
		propFix: {
			for: "htmlFor",
			class: "className"
		}
	}), m.optSelected || (k.propHooks.selected = {
		get: function(t) {
			t = t.parentNode;
			return t && t.parentNode && t.parentNode.selectedIndex, null
		},
		set: function(t) {
			t = t.parentNode;
			t && (t.selectedIndex, t.parentNode && t.parentNode.selectedIndex)
		}
	}), k.each(["tabIndex", "readOnly", "maxLength", "cellSpacing", "cellPadding", "rowSpan", "colSpan",
		"useMap", "frameBorder", "contentEditable"
	], function() {
		k.propFix[this.toLowerCase()] = this
	});
	var oe = /[\t\r\n\f]/g;

	function se(t) {
		return t.getAttribute && t.getAttribute("class") || ""
	}
	k.fn.extend({
		addClass: function(e) {
			var t, n, r, i, o, s, a = 0;
			if (k.isFunction(e)) return this.each(function(t) {
				k(this).addClass(e.call(this, t, se(this)))
			});
			if ("string" == typeof e && e)
				for (t = e.match(P) || []; n = this[a++];)
					if (s = se(n), r = 1 === n.nodeType && (" " + s + " ").replace(oe, " ")) {
						for (o = 0; i = t[o++];) r.indexOf(" " + i + " ") < 0 && (r += i + " ");
						s !== (s = k.trim(r)) && n.setAttribute("class", s)
					} return this
		},
		removeClass: function(e) {
			var t, n, r, i, o, s, a = 0;
			if (k.isFunction(e)) return this.each(function(t) {
				k(this).removeClass(e.call(this, t, se(this)))
			});
			if (!arguments.length) return this.attr("class", "");
			if ("string" == typeof e && e)
				for (t = e.match(P) || []; n = this[a++];)
					if (s = se(n), r = 1 === n.nodeType && (" " + s + " ").replace(oe, " ")) {
						for (o = 0; i = t[o++];)
							for (; - 1 < r.indexOf(" " + i + " ");) r = r.replace(" " + i + " ", " ");
						s !== (s = k.trim(r)) && n.setAttribute("class", s)
					} return this
		},
		toggleClass: function(i, e) {
			var o = typeof i;
			return "boolean" == typeof e && "string" == o ? e ? this.addClass(i) : this.removeClass(i) :
				k.isFunction(i) ? this.each(function(t) {
					k(this).toggleClass(i.call(this, t, se(this), e), e)
				}) : this.each(function() {
					var t, e, n, r;
					if ("string" == o)
						for (e = 0, n = k(this), r = i.match(P) || []; t = r[e++];) n.hasClass(t) ?
							n.removeClass(t) : n.addClass(t);
					else void 0 !== i && "boolean" != o || ((t = se(this)) && W.set(this,
						"__className__", t), this.setAttribute && this.setAttribute("class",
						!t && !1 !== i && W.get(this, "__className__") || ""))
				})
		},
		hasClass: function(t) {
			for (var e, n = 0, r = " " + t + " "; e = this[n++];)
				if (1 === e.nodeType && -1 < (" " + se(e) + " ").replace(oe, " ").indexOf(r)) return !0;
			return !1
		}
	});
	var ae = /\r/g,
		ue = /[\x20\t\r\n\f]+/g;
	k.fn.extend({
		val: function(e) {
			var n, t, r, i = this[0];
			return arguments.length ? (r = k.isFunction(e), this.each(function(t) {
					1 === this.nodeType && (null == (t = r ? e.call(this, t, k(this).val()) :
						e) ? t = "" : "number" == typeof t ? t += "" : k.isArray(t) && (t =
							k.map(t, function(t) {
								return null == t ? "" : t + ""
							})), (n = k.valHooks[this.type] || k.valHooks[this.nodeName
							.toLowerCase()]) && "set" in n && void 0 !== n.set(this, t,
							"value") || (this.value = t))
				})) : i ? (n = k.valHooks[i.type] || k.valHooks[i.nodeName.toLowerCase()]) && "get" in
				n && void 0 !== (t = n.get(i, "value")) ? t : "string" == typeof(t = i.value) ? t
				.replace(ae, "") : null == t ? "" : t : void 0
		}
	}), k.extend({
		valHooks: {
			option: {
				get: function(t) {
					var e = k.find.attr(t, "value");
					return null != e ? e : k.trim(k.text(t)).replace(ue, " ")
				}
			},
			select: {
				get: function(t) {
					for (var e, n = t.options, r = t.selectedIndex, i = "select-one" === t.type || r <
							0, o = i ? null : [], s = i ? r + 1 : n.length, a = r < 0 ? s : i ? r :
							0; a < s; a++)
						if (((e = n[a]).selected || a === r) && (m.optDisabled ? !e.disabled : null ===
								e.getAttribute("disabled")) && (!e.parentNode.disabled || !k.nodeName(e
								.parentNode, "optgroup"))) {
							if (e = k(e).val(), i) return e;
							o.push(e)
						} return o
				},
				set: function(t, e) {
					for (var n, r, i = t.options, o = k.makeArray(e), s = i.length; s--;)((r = i[s])
						.selected = -1 < k.inArray(k.valHooks.option.get(r), o)) && (n = !0);
					return n || (t.selectedIndex = -1), o
				}
			}
		}
	}), k.each(["radio", "checkbox"], function() {
		k.valHooks[this] = {
			set: function(t, e) {
				return k.isArray(e) ? t.checked = -1 < k.inArray(k(t).val(), e) : void 0
			}
		}, m.checkOn || (k.valHooks[this].get = function(t) {
			return null === t.getAttribute("value") ? "on" : t.value
		})
	});
	var ce = /^(?:focusinfocus|focusoutblur)$/;
	k.extend(k.event, {
		trigger: function(t, e, n, r) {
			var i, o, s, a, u, c, l = [n || C],
				h = d.call(t, "type") ? t.type : t,
				f = d.call(t, "namespace") ? t.namespace.split(".") : [],
				p = o = n = n || C;
			if (3 !== n.nodeType && 8 !== n.nodeType && !ce.test(h + k.event.triggered) && (-1 < h
					.indexOf(".") && (h = (f = h.split(".")).shift(), f.sort()), a = h.indexOf(":") <
					0 && "on" + h, (t = t[k.expando] ? t : new k.Event(h, "object" == typeof t && t))
					.isTrigger = r ? 2 : 3, t.namespace = f.join("."), t.rnamespace = t.namespace ?
					new RegExp("(^|\\.)" + f.join("\\.(?:.*\\.|)") + "(\\.|$)") : null, t.result =
					void 0, t.target || (t.target = n), e = null == e ? [t] : k.makeArray(e, [t]), c = k
					.event.special[h] || {}, r || !c.trigger || !1 !== c.trigger.apply(n, e))) {
				if (!r && !c.noBubble && !k.isWindow(n)) {
					for (s = c.delegateType || h, ce.test(s + h) || (p = p.parentNode); p; p = p
						.parentNode) l.push(p), o = p;
					o === (n.ownerDocument || C) && l.push(o.defaultView || o.parentWindow || x)
				}
				for (i = 0;
					(p = l[i++]) && !t.isPropagationStopped();) t.type = 1 < i ? s : c.bindType || h, (
						u = (W.get(p, "events") || {})[t.type] && W.get(p, "handle")) && u.apply(p, e),
					(u = a && p[a]) && u.apply && D(p) && (t.result = u.apply(p, e), !1 === t.result &&
						t.preventDefault());
				return t.type = h, r || t.isDefaultPrevented() || c._default && !1 !== c._default.apply(
					l.pop(), e) || !D(n) || a && k.isFunction(n[h]) && !k.isWindow(n) && ((o = n[
					a]) && (n[a] = null), n[k.event.triggered = h](), k.event.triggered = void 0,
					o && (n[a] = o)), t.result
			}
		},
		simulate: function(t, e, n) {
			t = k.extend(new k.Event, n, {
				type: t,
				isSimulated: !0
			});
			k.event.trigger(t, null, e)
		}
	}), k.fn.extend({
		trigger: function(t, e) {
			return this.each(function() {
				k.event.trigger(t, e, this)
			})
		},
		triggerHandler: function(t, e) {
			var n = this[0];
			return n ? k.event.trigger(t, e, n, !0) : void 0
		}
	}), k.each(
		"blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu"
		.split(" "),
		function(t, n) {
			k.fn[n] = function(t, e) {
				return 0 < arguments.length ? this.on(n, null, t, e) : this.trigger(n)
			}
		}), k.fn.extend({
		hover: function(t, e) {
			return this.mouseenter(t).mouseleave(e || t)
		}
	}), m.focusin = "onfocusin" in x, m.focusin || k.each({
		focus: "focusin",
		blur: "focusout"
	}, function(n, r) {
		function i(t) {
			k.event.simulate(r, t.target, k.event.fix(t))
		}
		k.event.special[r] = {
			setup: function() {
				var t = this.ownerDocument || this,
					e = W.access(t, r);
				e || t.addEventListener(n, i, !0), W.access(t, r, (e || 0) + 1)
			},
			teardown: function() {
				var t = this.ownerDocument || this,
					e = W.access(t, r) - 1;
				e ? W.access(t, r, e) : (t.removeEventListener(n, i, !0), W.remove(t, r))
			}
		}
	});
	var le = x.location,
		he = k.now(),
		fe = /\?/;
	k.parseJSON = function(t) {
		return JSON.parse(t + "")
	}, k.parseXML = function(t) {
		var e;
		if (!t || "string" != typeof t) return null;
		try {
			e = (new x.DOMParser).parseFromString(t, "text/xml")
		} catch (t) {
			e = void 0
		}
		return e && !e.getElementsByTagName("parsererror").length || k.error("Invalid XML: " + t), e
	};
	var pe = /#.*$/,
		de = /([?&])_=[^&]*/,
		ge = /^(.*?):[ \t]*([^\r\n]*)$/gm,
		me = /^(?:GET|HEAD)$/,
		ve = /^\/\//,
		ye = {},
		be = {},
		we = "*/".concat("*"),
		_e = C.createElement("a");

	function xe(o) {
		return function(t, e) {
			"string" != typeof t && (e = t, t = "*");
			var n, r = 0,
				i = t.toLowerCase().match(P) || [];
			if (k.isFunction(e))
				for (; n = i[r++];) "+" === n[0] ? (n = n.slice(1) || "*", (o[n] = o[n] || []).unshift(e)) : (o[
					n] = o[n] || []).push(e)
		}
	}

	function Ce(e, r, i, o) {
		var s = {},
			a = e === be;

		function u(t) {
			var n;
			return s[t] = !0, k.each(e[t] || [], function(t, e) {
				e = e(r, i, o);
				return "string" != typeof e || a || s[e] ? a ? !(n = e) : void 0 : (r.dataTypes.unshift(e),
					u(e), !1)
			}), n
		}
		return u(r.dataTypes[0]) || !s["*"] && u("*")
	}

	function ke(t, e) {
		var n, r, i = k.ajaxSettings.flatOptions || {};
		for (n in e) void 0 !== e[n] && ((i[n] ? t : r = r || {})[n] = e[n]);
		return r && k.extend(!0, t, r), t
	}
	_e.href = le.href, k.extend({
		active: 0,
		lastModified: {},
		etag: {},
		ajaxSettings: {
			url: le.href,
			type: "GET",
			isLocal: /^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(le.protocol),
			global: !0,
			processData: !0,
			async: !0,
			contentType: "application/x-www-form-urlencoded; charset=UTF-8",
			accepts: {
				"*": we,
				text: "text/plain",
				html: "text/html",
				xml: "application/xml, text/xml",
				json: "application/json, text/javascript"
			},
			contents: {
				xml: /\bxml\b/,
				html: /\bhtml/,
				json: /\bjson\b/
			},
			responseFields: {
				xml: "responseXML",
				text: "responseText",
				json: "responseJSON"
			},
			converters: {
				"* text": String,
				"text html": !0,
				"text json": k.parseJSON,
				"text xml": k.parseXML
			},
			flatOptions: {
				url: !0,
				context: !0
			}
		},
		ajaxSetup: function(t, e) {
			return e ? ke(ke(t, k.ajaxSettings), e) : ke(k.ajaxSettings, t)
		},
		ajaxPrefilter: xe(ye),
		ajaxTransport: xe(be),
		ajax: function(t, e) {
			"object" == typeof t && (e = t, t = void 0), e = e || {};
			var u, c, l, n, h, r, f, i, p = k.ajaxSetup({}, e),
				d = p.context || p,
				g = p.context && (d.nodeType || d.jquery) ? k(d) : k.event,
				m = k.Deferred(),
				v = k.Callbacks("once memory"),
				y = p.statusCode || {},
				o = {},
				s = {},
				b = 0,
				a = "canceled",
				w = {
					readyState: 0,
					getResponseHeader: function(t) {
						var e;
						if (2 === b) {
							if (!n)
								for (n = {}; e = ge.exec(l);) n[e[1].toLowerCase()] = e[2];
							e = n[t.toLowerCase()]
						}
						return null == e ? null : e
					},
					getAllResponseHeaders: function() {
						return 2 === b ? l : null
					},
					setRequestHeader: function(t, e) {
						var n = t.toLowerCase();
						return b || (t = s[n] = s[n] || t, o[t] = e), this
					},
					overrideMimeType: function(t) {
						return b || (p.mimeType = t), this
					},
					statusCode: function(t) {
						if (t)
							if (b < 2)
								for (var e in t) y[e] = [y[e], t[e]];
							else w.always(t[w.status]);
						return this
					},
					abort: function(t) {
						t = t || a;
						return u && u.abort(t), _(0, t), this
					}
				};
			if (m.promise(w).complete = v.add, w.success = w.done, w.error = w.fail, p.url = ((t || p
					.url || le.href) + "").replace(pe, "").replace(ve, le.protocol + "//"), p.type = e
				.method || e.type || p.method || p.type, p.dataTypes = k.trim(p.dataType || "*")
				.toLowerCase().match(P) || [""], null == p.crossDomain) {
				r = C.createElement("a");
				try {
					r.href = p.url, r.href = r.href, p.crossDomain = _e.protocol + "//" + _e.host != r
						.protocol + "//" + r.host
				} catch (t) {
					p.crossDomain = !0
				}
			}
			if (p.data && p.processData && "string" != typeof p.data && (p.data = k.param(p.data, p
					.traditional)), Ce(ye, p, e, w), 2 === b) return w;
			for (i in (f = k.event && p.global) && 0 == k.active++ && k.event.trigger("ajaxStart"), p
				.type = p.type.toUpperCase(), p.hasContent = !me.test(p.type), c = p.url, p
				.hasContent || (p.data && (c = p.url += (fe.test(c) ? "&" : "?") + p.data, delete p
					.data), !1 === p.cache && (p.url = de.test(c) ? c.replace(de, "$1_=" + he++) :
					c + (fe.test(c) ? "&" : "?") + "_=" + he++)), p.ifModified && (k.lastModified[c] &&
					w.setRequestHeader("If-Modified-Since", k.lastModified[c]), k.etag[c] && w
					.setRequestHeader("If-None-Match", k.etag[c])), (p.data && p.hasContent && !1 !== p
					.contentType || e.contentType) && w.setRequestHeader("Content-Type", p.contentType),
				w.setRequestHeader("Accept", p.dataTypes[0] && p.accepts[p.dataTypes[0]] ? p.accepts[p
						.dataTypes[0]] + ("*" !== p.dataTypes[0] ? ", " + we + "; q=0.01" : "") : p
					.accepts["*"]), p.headers) w.setRequestHeader(i, p.headers[i]);
			if (p.beforeSend && (!1 === p.beforeSend.call(d, w, p) || 2 === b)) return w.abort();
			for (i in a = "abort", {
					success: 1,
					error: 1,
					complete: 1
				}) w[i](p[i]);
			if (u = Ce(be, p, e, w)) {
				if (w.readyState = 1, f && g.trigger("ajaxSend", [w, p]), 2 === b) return w;
				p.async && 0 < p.timeout && (h = x.setTimeout(function() {
					w.abort("timeout")
				}, p.timeout));
				try {
					b = 1, u.send(o, _)
				} catch (t) {
					if (!(b < 2)) throw t;
					_(-1, t)
				}
			} else _(-1, "No Transport");

			function _(t, e, n, r) {
				var i, o, s, a = e;
				2 !== b && (b = 2, h && x.clearTimeout(h), u = void 0, l = r || "", w.readyState = 0 <
					t ? 4 : 0, r = 200 <= t && t < 300 || 304 === t, n && (s = function(t, e, n) {
						for (var r, i, o, s, a = t.contents, u = t.dataTypes;
							"*" === u[0];) u.shift(), void 0 === r && (r = t.mimeType || e
							.getResponseHeader("Content-Type"));
						if (r)
							for (i in a)
								if (a[i] && a[i].test(r)) {
									u.unshift(i);
									break
								} if (u[0] in n) o = u[0];
						else {
							for (i in n) {
								if (!u[0] || t.converters[i + " " + u[0]]) {
									o = i;
									break
								}
								s = s || i
							}
							o = o || s
						}
						return o ? (o !== u[0] && u.unshift(o), n[o]) : void 0
					}(p, w, n)), s = function(t, e, n, r) {
						var i, o, s, a, u, c = {},
							l = t.dataTypes.slice();
						if (l[1])
							for (s in t.converters) c[s.toLowerCase()] = t.converters[s];
						for (o = l.shift(); o;)
							if (t.responseFields[o] && (n[t.responseFields[o]] = e), !u && r && t
								.dataFilter && (e = t.dataFilter(e, t.dataType)), u = o, o = l
								.shift())
								if ("*" === o) o = u;
								else if ("*" !== u && u !== o) {
							if (!(s = c[u + " " + o] || c["* " + o]))
								for (i in c)
									if (a = i.split(" "), a[1] === o && (s = c[u + " " + a[0]] || c[
											"* " + a[0]])) {
										!0 === s ? s = c[i] : !0 !== c[i] && (o = a[0], l.unshift(a[
											1]));
										break
									} if (!0 !== s)
								if (s && t.throws) e = s(e);
								else try {
									e = s(e)
								} catch (t) {
									return {
										state: "parsererror",
										error: s ? t : "No conversion from " + u + " to " + o
									}
								}
						}
						return {
							state: "success",
							data: e
						}
					}(p, s, w, r), r ? (p.ifModified && ((n = w.getResponseHeader(
							"Last-Modified")) && (k.lastModified[c] = n), (n = w.getResponseHeader(
								"etag")) && (k.etag[c] = n)), 204 === t || "HEAD" === p.type ? a =
						"nocontent" : 304 === t ? a = "notmodified" : (a = s.state, i = s.data,
							r = !(o = s.error))) : (o = a, !t && a || (a = "error", t < 0 && (t =
						0))), w.status = t, w.statusText = (e || a) + "", r ? m.resolveWith(d, [i,
						a, w
					]) : m.rejectWith(d, [w, a, o]), w.statusCode(y), y = void 0, f && g.trigger(r ?
						"ajaxSuccess" : "ajaxError", [w, p, r ? i : o]), v.fireWith(d, [w, a]), f &&
					(g.trigger("ajaxComplete", [w, p]), --k.active || k.event.trigger("ajaxStop")))
			}
			return w
		},
		getJSON: function(t, e, n) {
			return k.get(t, e, n, "json")
		},
		getScript: function(t, e) {
			return k.get(t, void 0, e, "script")
		}
	}), k.each(["get", "post"], function(t, i) {
		k[i] = function(t, e, n, r) {
			return k.isFunction(e) && (r = r || n, n = e, e = void 0), k.ajax(k.extend({
				url: t,
				type: i,
				dataType: r,
				data: e,
				success: n
			}, k.isPlainObject(t) && t))
		}
	}), k._evalUrl = function(t) {
		return k.ajax({
			url: t,
			type: "GET",
			dataType: "script",
			async: !1,
			global: !1,
			throws: !0
		})
	}, k.fn.extend({
		wrapAll: function(e) {
			var t;
			return k.isFunction(e) ? this.each(function(t) {
				k(this).wrapAll(e.call(this, t))
			}) : (this[0] && (t = k(e, this[0].ownerDocument).eq(0).clone(!0), this[0].parentNode &&
				t.insertBefore(this[0]), t.map(function() {
					for (var t = this; t.firstElementChild;) t = t.firstElementChild;
					return t
				}).append(this)), this)
		},
		wrapInner: function(n) {
			return k.isFunction(n) ? this.each(function(t) {
				k(this).wrapInner(n.call(this, t))
			}) : this.each(function() {
				var t = k(this),
					e = t.contents();
				e.length ? e.wrapAll(n) : t.append(n)
			})
		},
		wrap: function(e) {
			var n = k.isFunction(e);
			return this.each(function(t) {
				k(this).wrapAll(n ? e.call(this, t) : e)
			})
		},
		unwrap: function() {
			return this.parent().each(function() {
				k.nodeName(this, "body") || k(this).replaceWith(this.childNodes)
			}).end()
		}
	}), k.expr.filters.hidden = function(t) {
		return !k.expr.filters.visible(t)
	}, k.expr.filters.visible = function(t) {
		return 0 < t.offsetWidth || 0 < t.offsetHeight || 0 < t.getClientRects().length
	};
	var Se = /%20/g,
		Oe = /\[\]$/,
		Ee = /\r?\n/g,
		Te = /^(?:submit|button|image|reset|file)$/i,
		Ae = /^(?:input|select|textarea|keygen)/i;
	k.param = function(t, e) {
		function n(t, e) {
			e = k.isFunction(e) ? e() : null == e ? "" : e, i[i.length] = encodeURIComponent(t) + "=" +
				encodeURIComponent(e)
		}
		var r, i = [];
		if (void 0 === e && (e = k.ajaxSettings && k.ajaxSettings.traditional), k.isArray(t) || t.jquery && !k
			.isPlainObject(t)) k.each(t, function() {
			n(this.name, this.value)
		});
		else
			for (r in t) ! function n(r, t, i, o) {
				if (k.isArray(t)) k.each(t, function(t, e) {
					i || Oe.test(r) ? o(r, e) : n(r + "[" + ("object" == typeof e && null != e ? t :
						"") + "]", e, i, o)
				});
				else if (i || "object" !== k.type(t)) o(r, t);
				else
					for (var e in t) n(r + "[" + e + "]", t[e], i, o)
			}(r, t[r], e, n);
		return i.join("&").replace(Se, "+")
	}, k.fn.extend({
		serialize: function() {
			return k.param(this.serializeArray())
		},
		serializeArray: function() {
			return this.map(function() {
				var t = k.prop(this, "elements");
				return t ? k.makeArray(t) : this
			}).filter(function() {
				var t = this.type;
				return this.name && !k(this).is(":disabled") && Ae.test(this.nodeName) && !Te
					.test(t) && (this.checked || !V.test(t))
			}).map(function(t, e) {
				var n = k(this).val();
				return null == n ? null : k.isArray(n) ? k.map(n, function(t) {
					return {
						name: e.name,
						value: t.replace(Ee, "\r\n")
					}
				}) : {
					name: e.name,
					value: n.replace(Ee, "\r\n")
				}
			}).get()
		}
	}), k.ajaxSettings.xhr = function() {
		try {
			return new x.XMLHttpRequest
		} catch (t) {}
	};
	var Ie = {
			0: 200,
			1223: 204
		},
		je = k.ajaxSettings.xhr();
	m.cors = !!je && "withCredentials" in je, m.ajax = je = !!je, k.ajaxTransport(function(i) {
		var o, s;
		return m.cors || je && !i.crossDomain ? {
			send: function(t, e) {
				var n, r = i.xhr();
				if (r.open(i.type, i.url, i.async, i.username, i.password), i.xhrFields)
					for (n in i.xhrFields) r[n] = i.xhrFields[n];
				for (n in i.mimeType && r.overrideMimeType && r.overrideMimeType(i.mimeType), i
					.crossDomain || t["X-Requested-With"] || (t["X-Requested-With"] =
						"XMLHttpRequest"), t) r.setRequestHeader(n, t[n]);
				o = function(t) {
						return function() {
							o && (o = s = r.onload = r.onerror = r.onabort = r
								.onreadystatechange = null, "abort" === t ? r.abort() :
								"error" === t ? "number" != typeof r.status ? e(0,
								"error") : e(r.status, r.statusText) : e(Ie[r.status] || r
									.status, r.statusText, "text" !== (r.responseType ||
										"text") || "string" != typeof r.responseText ? {
										binary: r.response
									} : {
										text: r.responseText
									}, r.getAllResponseHeaders()))
						}
					}, r.onload = o(), s = r.onerror = o("error"), void 0 !== r.onabort ? r
					.onabort = s : r.onreadystatechange = function() {
						4 === r.readyState && x.setTimeout(function() {
							o && s()
						})
					}, o = o("abort");
				try {
					r.send(i.hasContent && i.data || null)
				} catch (t) {
					if (o) throw t
				}
			},
			abort: function() {
				o && o()
			}
		} : void 0
	}), k.ajaxSetup({
		accepts: {
			script: "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"
		},
		contents: {
			script: /\b(?:java|ecma)script\b/
		},
		converters: {
			"text script": function(t) {
				return k.globalEval(t), t
			}
		}
	}), k.ajaxPrefilter("script", function(t) {
		void 0 === t.cache && (t.cache = !1), t.crossDomain && (t.type = "GET")
	}), k.ajaxTransport("script", function(n) {
		var r, i;
		if (n.crossDomain) return {
			send: function(t, e) {
				r = k("<script>").prop({
					charset: n.scriptCharset,
					src: n.url
				}).on("load error", i = function(t) {
					r.remove(), i = null, t && e("error" === t.type ? 404 : 200, t.type)
				}), C.head.appendChild(r[0])
			},
			abort: function() {
				i && i()
			}
		}
	});
	var Pe = [],
		Ne = /(=)\?(?=&|$)|\?\?/;
	k.ajaxSetup({
		jsonp: "callback",
		jsonpCallback: function() {
			var t = Pe.pop() || k.expando + "_" + he++;
			return this[t] = !0, t
		}
	}), k.ajaxPrefilter("json jsonp", function(t, e, n) {
		var r, i, o, s = !1 !== t.jsonp && (Ne.test(t.url) ? "url" : "string" == typeof t.data && 0 === (t
				.contentType || "").indexOf("application/x-www-form-urlencoded") && Ne.test(t.data) &&
			"data");
		return s || "jsonp" === t.dataTypes[0] ? (r = t.jsonpCallback = k.isFunction(t.jsonpCallback) ? t
			.jsonpCallback() : t.jsonpCallback, s ? t[s] = t[s].replace(Ne, "$1" + r) : !1 !== t
			.jsonp && (t.url += (fe.test(t.url) ? "&" : "?") + t.jsonp + "=" + r), t.converters[
				"script json"] = function() {
				return o || k.error(r + " was not called"), o[0]
			}, t.dataTypes[0] = "json", i = x[r], x[r] = function() {
				o = arguments
			}, n.always(function() {
				void 0 === i ? k(x).removeProp(r) : x[r] = i, t[r] && (t.jsonpCallback = e
					.jsonpCallback, Pe.push(r)), o && k.isFunction(i) && i(o[0]), o = i = void 0
			}), "script") : void 0
	}), k.parseHTML = function(t, e, n) {
		if (!t || "string" != typeof t) return null;
		"boolean" == typeof e && (n = e, e = !1), e = e || C;
		var r = w.exec(t),
			n = !n && [];
		return r ? [e.createElement(r[1])] : (r = Z([t], e, n), n && n.length && k(n).remove(), k.merge([], r
			.childNodes))
	};
	var De = k.fn.load;

	function Re(t) {
		return k.isWindow(t) ? t : 9 === t.nodeType && t.defaultView
	}
	k.fn.load = function(t, e, n) {
		if ("string" != typeof t && De) return De.apply(this, arguments);
		var r, i, o, s = this,
			a = t.indexOf(" ");
		return -1 < a && (r = k.trim(t.slice(a)), t = t.slice(0, a)), k.isFunction(e) ? (n = e, e = void 0) :
			e && "object" == typeof e && (i = "POST"), 0 < s.length && k.ajax({
				url: t,
				type: i || "GET",
				dataType: "html",
				data: e
			}).done(function(t) {
				o = arguments, s.html(r ? k("<div>").append(k.parseHTML(t)).find(r) : t)
			}).always(n && function(t, e) {
				s.each(function() {
					n.apply(this, o || [t.responseText, e, t])
				})
			}), this
	}, k.each(["ajaxStart", "ajaxStop", "ajaxComplete", "ajaxError", "ajaxSuccess", "ajaxSend"], function(t,
	e) {
		k.fn[e] = function(t) {
			return this.on(e, t)
		}
	}), k.expr.filters.animated = function(e) {
		return k.grep(k.timers, function(t) {
			return e === t.elem
		}).length
	}, k.offset = {
		setOffset: function(t, e, n) {
			var r, i, o, s, a = k.css(t, "position"),
				u = k(t),
				c = {};
			"static" === a && (t.style.position = "relative"), o = u.offset(), r = k.css(t, "top"), s = k
				.css(t, "left"), s = ("absolute" === a || "fixed" === a) && -1 < (r + s).indexOf("auto") ? (
					i = (a = u.position()).top, a.left) : (i = parseFloat(r) || 0, parseFloat(s) || 0), k
				.isFunction(e) && (e = e.call(t, n, k.extend({}, o))), null != e.top && (c.top = e.top - o
					.top + i), null != e.left && (c.left = e.left - o.left + s), "using" in e ? e.using
				.call(t, c) : u.css(c)
		}
	}, k.fn.extend({
		offset: function(e) {
			if (arguments.length) return void 0 === e ? this : this.each(function(t) {
				k.offset.setOffset(this, e, t)
			});
			var t, n = this[0],
				r = {
					top: 0,
					left: 0
				},
				i = n && n.ownerDocument;
			return i ? (t = i.documentElement, k.contains(t, n) ? (r = n.getBoundingClientRect(), i =
				Re(i), {
					top: r.top + i.pageYOffset - t.clientTop,
					left: r.left + i.pageXOffset - t.clientLeft
				}) : r) : void 0
		},
		position: function() {
			if (this[0]) {
				var t, e, n = this[0],
					r = {
						top: 0,
						left: 0
					};
				return "fixed" === k.css(n, "position") ? e = n.getBoundingClientRect() : (t = this
					.offsetParent(), e = this.offset(), k.nodeName(t[0], "html") || (r = t
				.offset()), r.top += k.css(t[0], "borderTopWidth", !0), r.left += k.css(t[0],
						"borderLeftWidth", !0)), {
					top: e.top - r.top - k.css(n, "marginTop", !0),
					left: e.left - r.left - k.css(n, "marginLeft", !0)
				}
			}
		},
		offsetParent: function() {
			return this.map(function() {
				for (var t = this.offsetParent; t && "static" === k.css(t, "position");) t = t
					.offsetParent;
				return t || Pt
			})
		}
	}), k.each({
		scrollLeft: "pageXOffset",
		scrollTop: "pageYOffset"
	}, function(e, i) {
		var o = "pageYOffset" === i;
		k.fn[e] = function(t) {
			return R(this, function(t, e, n) {
				var r = Re(t);
				return void 0 === n ? r ? r[i] : t[e] : void(r ? r.scrollTo(o ? r.pageXOffset :
					n, o ? n : r.pageYOffset) : t[e] = n)
			}, e, t, arguments.length)
		}
	}), k.each(["top", "left"], function(t, n) {
		k.cssHooks[n] = Rt(m.pixelPosition, function(t, e) {
			return e ? (e = Dt(t, n), It.test(e) ? k(t).position()[n] + "px" : e) : void 0
		})
	}), k.each({
		Height: "height",
		Width: "width"
	}, function(o, s) {
		k.each({
			padding: "inner" + o,
			content: s,
			"": "outer" + o
		}, function(r, t) {
			k.fn[t] = function(t, e) {
				var n = arguments.length && (r || "boolean" != typeof t),
					i = r || (!0 === t || !0 === e ? "margin" : "border");
				return R(this, function(t, e, n) {
					var r;
					return k.isWindow(t) ? t.document.documentElement["client" + o] :
						9 === t.nodeType ? (r = t.documentElement, Math.max(t.body[
								"scroll" + o], r["scroll" + o], t.body["offset" +
							o], r["offset" + o], r["client" + o])) : void 0 === n ? k
						.css(t, e, i) : k.style(t, e, n, i)
				}, s, n ? t : void 0, n, null)
			}
		})
	}), k.fn.extend({
		bind: function(t, e, n) {
			return this.on(t, null, e, n)
		},
		unbind: function(t, e) {
			return this.off(t, null, e)
		},
		delegate: function(t, e, n, r) {
			return this.on(e, t, n, r)
		},
		undelegate: function(t, e, n) {
			return 1 === arguments.length ? this.off(t, "**") : this.off(e, t || "**", n)
		},
		size: function() {
			return this.length
		}
	}), k.fn.andSelf = k.fn.addBack, "function" == typeof define && define.amd && define("jquery", [],
	function() {
		return k
	});
	var Me = x.jQuery,
		We = x.$;
	return k.noConflict = function(t) {
		return x.$ === k && (x.$ = We), t && x.jQuery === k && (x.jQuery = Me), k
	}, t || (x.jQuery = x.$ = k), k
}),
function(t, e) {
	"object" == typeof exports && "object" == typeof module ? module.exports = e() : "function" == typeof define &&
		define.amd ? define([], e) : "object" == typeof exports ? exports.clipboard = e() : t.clipboard = e()
}(this, function() {
	return i = {}, r.m = n = [function(t, e, n) {
		"use strict";

		function o(t) {
			var e = new v,
				t = function(n, t, r) {
					f("listener called"), n.success = !0, t.forEach(function(t, e) {
						r.clipboardData.setData(e, t), e === g && r.clipboardData.getData(e) != t &&
							(f("setting text/plain failed"), n.success = !1)
					}), r.preventDefault()
				}.bind(this, e, t);
			document.addEventListener("copy", t);
			try {
				document.execCommand("copy")
			} finally {
				document.removeEventListener("copy", t)
			}
			return e.success
		}

		function s(t, e) {
			a(t);
			e = o(e);
			return u(), e
		}

		function a(t) {
			var e = document.getSelection(),
				n = document.createRange();
			n.selectNodeContents(t), e.removeAllRanges(), e.addRange(n)
		}

		function u() {
			document.getSelection().removeAllRanges()
		}

		function c() {
			return "undefined" == typeof ClipboardEvent && void 0 !== window.clipboardData && void 0 !==
				window.clipboardData.setData
		}

		function r() {
			return new h(function(t, e) {
				var n = window.clipboardData.getData("Text");
				"" === n ? e(new Error(
					"Empty clipboard or could not read plain text from clipboard")) : t(n)
			})
		}
		Object.defineProperty(e, "__esModule", {
			value: !0
		});
		var i = n(1),
			l = n(5),
			h = "undefined" == typeof Promise ? i.Promise : Promise,
			f = function(t) {},
			p = !0,
			d = function() {
				(console.warn || console.log).call(arguments)
			}.bind(console, "[clipboard-polyfill]"),
			g = "text/plain",
			i = (m.setDebugLog = function(t) {
				f = t
			}, m.suppressWarnings = function() {
				p = !1, l.suppressDTWarnings()
			}, m.write = function(i) {
				return p && !i.getData(g) && d(
					"clipboard.write() was called without a `text/plain` data type. On some platforms, this may result in an empty clipboard. Call clipboard.suppressWarnings() to suppress this warning."
					), new h(function(t, e) {
					if (c())(function(t) {
						if (void 0 !== (t = t.getData(g))) return window.clipboardData
							.setData("Text", t);
						throw "No `text/plain` value was specified."
					})(i) ? t() : e(new Error(
						"Copying failed, possibly because the user rejected it."));
					else {
						if (o(i)) return f("regular execCopy worked"), void t();
						if (-1 < navigator.userAgent.indexOf("Edge")) return f(
							'UA "Edge" => assuming success'), void t();
						if (s(document.body, i)) return f("copyUsingTempSelection worked"),
							void t();
						if (r = i, (n = document.createElement("div")).setAttribute("style",
								"-webkit-user-select: text !important"), n.textContent =
							"temporary element", document.body.appendChild(n), r = s(n, r),
							document.body.removeChild(n), r) return f(
							"copyUsingTempElem worked"), void t();
						var n, r = i.getData(g);
						if (void 0 !== r && function(t) {
								f("copyTextUsingDOM");
								var e = document.createElement("div");
								e.setAttribute("style", "-webkit-user-select: text !important");
								var n = e;
								e.attachShadow && (f("Using shadow DOM."), n = e.attachShadow({
									mode: "open"
								}));
								var r = document.createElement("span");
								return r.innerText = t, n.appendChild(r), document.body
									.appendChild(e), a(r), r = document.execCommand("copy"),
								u(), document.body.removeChild(e), r
							}(r)) return f("copyTextUsingDOM worked"), void t();
						e(new Error("Copy command failed."))
					}
				})
			}, m.writeText = function(t) {
				if (navigator.clipboard && navigator.clipboard.writeText) return navigator.clipboard
					.writeText(t);
				var e = new l.DT;
				return e.setData(g, t), this.write(e)
			}, m.read = function() {
				return new h(function(n, t) {
					c() ? r().then(function(t) {
						return n((e = t, (t = new l.DT).setData(g, e), t));
						var e
					}, t) : t("Read is not supported in your browser.")
				})
			}, m.readText = function() {
				return navigator.clipboard && navigator.clipboard.readText ? navigator.clipboard
					.readText() : c() ? r() : new h(function(t, e) {
						e("Read is not supported in your browser.")
					})
			}, m.DT = l.DT, m);

		function m() {}
		e.default = i;
		var v = function() {
			this.success = !1
		};
		t.exports = i
	}, function(t, e, st) {
		(function(it, ot) {
			t.exports = function() {
				"use strict";

				function n(t) {
					var e = typeof t;
					return null !== t && ("object" === e || "function" === e)
				}

				function c(t) {
					return "function" == typeof t
				}

				function t(t) {
					q = t
				}

				function e(t) {
					z = t
				}

				function r() {
					return void 0 !== B ? function() {
						B(o)
					} : i()
				}

				function i() {
					var t = setTimeout;
					return function() {
						return t(o, 1)
					}
				}

				function o() {
					for (var t = 0; t < H; t += 2)(0, Y[t])(Y[t + 1]), Y[t] = void 0, Y[t + 1] =
						void 0;
					H = 0
				}

				function s(t, e) {
					var n = arguments,
						r = this,
						i = new this.constructor(u);
					void 0 === i[Q] && T(i);
					var o = r._state;
					return o ? function() {
						var t = n[o - 1];
						z(function() {
							return S(o, i, t, r._result)
						})
					}() : _(r, i, t, e), i
				}

				function a(t) {
					var e = this;
					if (t && "object" == typeof t && t.constructor === e) return t;
					var n = new e(u);
					return v(n, t), n
				}

				function u() {}

				function l() {
					return new TypeError("You cannot resolve a promise with itself")
				}

				function h() {
					return new TypeError("A promises callback cannot return that same promise.")
				}

				function f(t) {
					try {
						return t.then
					} catch (t) {
						return et.error = t, et
					}
				}

				function p(t, e, n, r) {
					try {
						t.call(e, n, r)
					} catch (t) {
						return t
					}
				}

				function d(t, r, i) {
					z(function(e) {
						var n = !1,
							t = p(i, r, function(t) {
								n || (n = !0, r !== t ? v(e, t) : b(e, t))
							}, function(t) {
								n || (n = !0, w(e, t))
							}, "Settle: " + (e._label || " unknown promise"));
						!n && t && (n = !0, w(e, t))
					}, t)
				}

				function g(e, t) {
					t._state === Z ? b(e, t._result) : t._state === tt ? w(e, t._result) : _(t,
						void 0,
						function(t) {
							return v(e, t)
						},
						function(t) {
							return w(e, t)
						})
				}

				function m(t, e, n) {
					e.constructor === t.constructor && n === s && e.constructor.resolve === a ? g(t,
						e) : n === et ? (w(t, et.error), et.error = null) : void 0 === n ? b(t,
						e) : c(n) ? d(t, e, n) : b(t, e)
				}

				function v(t, e) {
					t === e ? w(t, l()) : n(e) ? m(t, e, f(e)) : b(t, e)
				}

				function y(t) {
					t._onerror && t._onerror(t._result), x(t)
				}

				function b(t, e) {
					t._state === J && (t._result = e, t._state = Z, 0 !== t._subscribers.length &&
						z(x, t))
				}

				function w(t, e) {
					t._state === J && (t._state = tt, t._result = e, z(y, t))
				}

				function _(t, e, n, r) {
					var i = t._subscribers,
						o = i.length;
					t._onerror = null, i[o] = e, i[o + Z] = n, i[o + tt] = r, 0 === o && t._state &&
						z(x, t)
				}

				function x(t) {
					var e = t._subscribers,
						n = t._state;
					if (0 !== e.length) {
						for (var r = void 0, i = void 0, o = t._result, s = 0; s < e.length; s += 3)
							r = e[s], i = e[s + n], r ? S(n, r, i, o) : i(o);
						t._subscribers.length = 0
					}
				}

				function C() {
					this.error = null
				}

				function k(t, e) {
					try {
						return t(e)
					} catch (t) {
						return nt.error = t, nt
					}
				}

				function S(t, e, n, r) {
					var i = c(n),
						o = void 0,
						s = void 0,
						a = void 0,
						u = void 0;
					if (i) {
						if (o = k(n, r), o === nt ? (u = !0, s = o.error, o.error = null) : a = !0,
							e === o) return void w(e, h())
					} else o = r, a = !0;
					e._state !== J || (i && a ? v(e, o) : u ? w(e, s) : t === Z ? b(e, o) : t ===
						tt && w(e, o))
				}

				function O(e, t) {
					try {
						t(function(t) {
							v(e, t)
						}, function(t) {
							w(e, t)
						})
					} catch (t) {
						w(e, t)
					}
				}

				function E() {
					return rt++
				}

				function T(t) {
					t[Q] = rt++, t._state = void 0, t._result = void 0, t._subscribers = []
				}

				function A(t, e) {
					this._instanceConstructor = t, this.promise = new t(u), this.promise[Q] || T(
						this.promise), F(e) ? (this.length = e.length, this._remaining = e
						.length, this._result = new Array(this.length), 0 === this.length ? b(
							this.promise, this._result) : (this.length = this.length || 0, this
							._enumerate(e), 0 === this._remaining && b(this.promise, this
								._result))) : w(this.promise, I())
				}

				function I() {
					return new Error("Array Methods must be provided an Array")
				}

				function j(t) {
					return new A(this, t).promise
				}

				function P(i) {
					var o = this;
					return new o(F(i) ? function(t, e) {
						for (var n = i.length, r = 0; r < n; r++) o.resolve(i[r]).then(t, e)
					} : function(t, e) {
						return e(new TypeError("You must pass an array to race."))
					})
				}

				function N(t) {
					var e = this,
						n = new e(u);
					return w(n, t), n
				}

				function D() {
					throw new TypeError(
						"You must pass a resolver function as the first argument to the promise constructor"
						)
				}

				function R() {
					throw new TypeError(
						"Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function."
						)
				}

				function M(t) {
					this[Q] = E(), this._result = this._state = void 0, this._subscribers = [],
						u !== t && ("function" != typeof t && D(), this instanceof M ? O(this, t) :
							R())
				}

				function W() {
					var t = void 0;
					if (void 0 !== ot) t = ot;
					else if ("undefined" != typeof self) t = self;
					else try {
						t = Function("return this")()
					} catch (t) {
						throw new Error(
							"polyfill failed because global object is unavailable in this environment"
							)
					}
					var e = t.Promise;
					if (e) {
						var n = null;
						try {
							n = Object.prototype.toString.call(e.resolve())
						} catch (t) {}
						if ("[object Promise]" === n && !e.cast) return
					}
					t.Promise = M
				}
				var L = void 0,
					F = L = Array.isArray ? Array.isArray : function(t) {
						return "[object Array]" === Object.prototype.toString.call(t)
					},
					H = 0,
					B = void 0,
					q = void 0,
					z = function(t, e) {
						Y[H] = t, Y[H + 1] = e, 2 === (H += 2) && (q ? q(o) : K())
					},
					U = "undefined" != typeof window ? window : void 0,
					G = U || {},
					V = G.MutationObserver || G.WebKitMutationObserver,
					$ = "undefined" == typeof self && void 0 !== it && "[object process]" === {}
					.toString.call(it),
					X = "undefined" != typeof Uint8ClampedArray && "undefined" !=
					typeof importScripts && "undefined" != typeof MessageChannel,
					Y = new Array(1e3),
					K = void 0;
				K = $ ? function() {
					return function() {
						return it.nextTick(o)
					}
				}() : V ? function() {
					var t = 0,
						e = new V(o),
						n = document.createTextNode("");
					return e.observe(n, {
							characterData: !0
						}),
						function() {
							n.data = t = ++t % 2
						}
				}() : X ? function() {
					var t = new MessageChannel;
					return t.port1.onmessage = o,
						function() {
							return t.port2.postMessage(0)
						}
				}() : void 0 === U ? function() {
					try {
						var t = st(4);
						return B = t.runOnLoop || t.runOnContext, r()
					} catch (t) {
						return i()
					}
				}() : i();
				var Q = Math.random().toString(36).substring(16),
					J = void 0,
					Z = 1,
					tt = 2,
					et = new C,
					nt = new C,
					rt = 0;
				return A.prototype._enumerate = function(t) {
						for (var e = 0; this._state === J && e < t.length; e++) this._eachEntry(t[
							e], e)
					}, A.prototype._eachEntry = function(e, t) {
						var n = this._instanceConstructor,
							r = n.resolve;
						if (r === a) {
							var i = f(e);
							if (i === s && e._state !== J) this._settledAt(e._state, t, e._result);
							else if ("function" != typeof i) this._remaining--, this._result[t] = e;
							else if (n === M) {
								var o = new n(u);
								m(o, e, i), this._willSettleAt(o, t)
							} else this._willSettleAt(new n(function(t) {
								return t(e)
							}), t)
						} else this._willSettleAt(r(e), t)
					}, A.prototype._settledAt = function(t, e, n) {
						var r = this.promise;
						r._state === J && (this._remaining--, t === tt ? w(r, n) : this._result[e] =
							n), 0 === this._remaining && b(r, this._result)
					}, A.prototype._willSettleAt = function(t, e) {
						var n = this;
						_(t, void 0, function(t) {
							return n._settledAt(Z, e, t)
						}, function(t) {
							return n._settledAt(tt, e, t)
						})
					}, M.all = j, M.race = P, M.resolve = a, M.reject = N, M._setScheduler = t, M
					._setAsap = e, M._asap = z, M.prototype = {
						constructor: M,
						then: s,
						catch: function(t) {
							return this.then(null, t)
						}
					}, M.polyfill = W, M.Promise = M
			}()
		}).call(e, st(2), st(3))
	}, function(t, e) {
		function n() {
			throw new Error("setTimeout has not been defined")
		}

		function r() {
			throw new Error("clearTimeout has not been defined")
		}

		function i(e) {
			if (c === setTimeout) return setTimeout(e, 0);
			if ((c === n || !c) && setTimeout) return c = setTimeout, setTimeout(e, 0);
			try {
				return c(e, 0)
			} catch (t) {
				try {
					return c.call(null, e, 0)
				} catch (t) {
					return c.call(this, e, 0)
				}
			}
		}

		function o() {
			p && h && (p = !1, h.length ? f = h.concat(f) : d = -1, f.length && s())
		}

		function s() {
			if (!p) {
				var t = i(o);
				p = !0;
				for (var e = f.length; e;) {
					for (h = f, f = []; ++d < e;) h && h[d].run();
					d = -1, e = f.length
				}
				h = null, p = !1,
					function(e) {
						if (l === clearTimeout) return clearTimeout(e);
						if ((l === r || !l) && clearTimeout) return l = clearTimeout, clearTimeout(e);
						try {
							l(e)
						} catch (t) {
							try {
								return l.call(null, e)
							} catch (t) {
								return l.call(this, e)
							}
						}
					}(t)
			}
		}

		function a(t, e) {
			this.fun = t, this.array = e
		}

		function u() {}
		var c, l, t = t.exports = {};
		! function() {
			try {
				c = "function" == typeof setTimeout ? setTimeout : n
			} catch (t) {
				c = n
			}
			try {
				l = "function" == typeof clearTimeout ? clearTimeout : r
			} catch (t) {
				l = r
			}
		}();
		var h, f = [],
			p = !1,
			d = -1;
		t.nextTick = function(t) {
				var e = new Array(arguments.length - 1);
				if (1 < arguments.length)
					for (var n = 1; n < arguments.length; n++) e[n - 1] = arguments[n];
				f.push(new a(t, e)), 1 !== f.length || p || i(s)
			}, a.prototype.run = function() {
				this.fun.apply(null, this.array)
			}, t.title = "browser", t.browser = !0, t.env = {}, t.argv = [], t.version = "", t
			.versions = {}, t.on = u, t.addListener = u, t.once = u, t.off = u, t.removeListener = u, t
			.removeAllListeners = u, t.emit = u, t.prependListener = u, t.prependOnceListener = u, t
			.listeners = function(t) {
				return []
			}, t.binding = function(t) {
				throw new Error("process.binding is not supported")
			}, t.cwd = function() {
				return "/"
			}, t.chdir = function(t) {
				throw new Error("process.chdir is not supported")
			}, t.umask = function() {
				return 0
			}
	}, function(t, e) {
		var n = function() {
			return this
		}();
		try {
			n = n || Function("return this")() || (0, eval)("this")
		} catch (t) {
			"object" == typeof window && (n = window)
		}
		t.exports = n
	}, function(t, e) {}, function(t, e, n) {
		"use strict";
		Object.defineProperty(e, "__esModule", {
			value: !0
		});
		var r = ["text/plain", "text/html"],
			i = function() {
				(console.warn || console.log).call(arguments)
			}.bind(console, "[clipboard-polyfill]"),
			o = !0;
		e.suppressDTWarnings = function() {
			o = !1
		};
		var s = (a.prototype.setData = function(t, e) {
			o && -1 === r.indexOf(t) && i("Unknown data type: " + t,
				"Call clipboard.suppressWarnings() to suppress this warning."), this.m[t] = e
		}, a.prototype.getData = function(t) {
			return this.m[t]
		}, a.prototype.forEach = function(t) {
			for (var e in this.m) t(this.m[e], e)
		}, a);

		function a() {
			this.m = {}
		}
		e.DT = s
	}], r.c = i, r.d = function(t, e, n) {
		r.o(t, e) || Object.defineProperty(t, e, {
			configurable: !1,
			enumerable: !0,
			get: n
		})
	}, r.n = function(t) {
		var e = t && t.__esModule ? function() {
			return t.default
		} : function() {
			return t
		};
		return r.d(e, "a", e), e
	}, r.o = function(t, e) {
		return Object.prototype.hasOwnProperty.call(t, e)
	}, r.p = "", r(r.s = 0);

	function r(t) {
		if (i[t]) return i[t].exports;
		var e = i[t] = {
			i: t,
			l: !1,
			exports: {}
		};
		return n[t].call(e.exports, e, e.exports, r), e.l = !0, e.exports
	}
	var n, i
}),
function(t) {
	"use strict";
	"function" == typeof define && define.amd ? define(["jquery"], t) : "object" == typeof exports && "object" ==
		typeof module ? module.exports = t(require("jquery")) : t(jQuery)
}(function(It, jt) {
	"use strict";
	var t, Pt = {
			beforeShow: n,
			move: n,
			change: n,
			show: n,
			hide: n,
			color: !1,
			flat: !1,
			showInput: !1,
			allowEmpty: !1,
			showButtons: !0,
			clickoutFiresChange: !0,
			showInitial: !1,
			showPalette: !1,
			showPaletteOnly: !1,
			hideAfterPaletteSelect: !1,
			togglePaletteOnly: !1,
			showSelectionPalette: !0,
			localStorageKey: !1,
			appendTo: "body",
			maxSelectionSize: 7,
			cancelText: "cancel",
			chooseText: "choose",
			togglePaletteMoreText: "more",
			togglePaletteLessText: "less",
			clearText: "Clear Color Selection",
			noColorSelectedText: "No Color Selected",
			preferredFormat: !1,
			className: "",
			containerClassName: "",
			replacerClassName: "",
			showAlpha: !1,
			theme: "sp-light",
			palette: [
				["#ffffff", "#000000", "#ff0000", "#ff8000", "#ffff00", "#008000", "#0000ff", "#4b0082",
					"#9400d3"
				]
			],
			selectionPalette: [],
			disabled: !1,
			offset: null
		},
		Nt = [],
		Dt = !!/msie/i.exec(window.navigator.userAgent),
		Rt = ((t = document.createElement("div").style).cssText = "background-color:rgba(0,0,0,.5)", e(t
			.backgroundColor, "rgba") || e(t.backgroundColor, "hsla")),
		Mt = ["<div class='sp-replacer'>", "<div class='sp-preview'><div class='sp-preview-inner'></div></div>",
			"<div class='sp-dd'>&#9660;</div>", "</div>"
		].join(""),
		Wt = function() {
			var t = "";
			if (Dt)
				for (var e = 1; e <= 6; e++) t += "<div class='sp-" + e + "'></div>";
			return ["<div class='sp-container sp-hidden'>", "<div class='sp-palette-container'>",
				"<div class='sp-palette sp-thumb sp-cf'></div>",
				"<div class='sp-palette-button-container sp-cf'>",
				"<button type='button' class='sp-palette-toggle'></button>", "</div>", "</div>",
				"<div class='sp-picker-container'>", "<div class='sp-top sp-cf'>",
				"<div class='sp-fill'></div>", "<div class='sp-top-inner'>", "<div class='sp-color'>",
				"<div class='sp-sat'>", "<div class='sp-val'>", "<div class='sp-dragger'></div>", "</div>",
				"</div>", "</div>", "<div class='sp-clear sp-clear-display'>", "</div>", "<div class='sp-hue'>",
				"<div class='sp-slider'></div>", t, "</div>", "</div>",
				"<div class='sp-alpha'><div class='sp-alpha-inner'><div class='sp-alpha-handle'></div></div></div>",
				"</div>", "<div class='sp-input-container sp-cf'>",
				"<input class='sp-input formulaInputFocus' type='text' spellcheck='false'  />", "</div>",
				"<div class='sp-initial sp-thumb sp-cf'></div>", "<div class='sp-button-container sp-cf'>",
				"<a class='sp-cancel' href='#'></a>", "<button type='button' class='sp-choose'></button>",
				"</div>", "</div>", "</div>"
			].join("")
		}();

	function e(t, e) {
		return !!~("" + t).indexOf(e)
	}

	function Lt(t, e, n, r) {
		for (var i = [], o = 0; o < t.length; o++) {
			var s, a, u, c = t[o];
			c ? (a = (s = tinycolor(c)).toHsl().l < .5 ? "sp-thumb-el sp-thumb-dark" : "sp-thumb-el sp-thumb-light",
				a += tinycolor.equals(e, c) ? " sp-thumb-active" : "", u = s.toString(r.preferredFormat ||
					"rgb"), c = Rt ? "background-color:" + s.toRgbString() : "filter:" + s.toFilter(), i.push(
					'<span title="' + u + '" data-color="' + s.toRgbString() + '" class="' + a +
					'"><span class="sp-thumb-inner" style="' + c + ';" /></span>')) : i.push(It("<div />")
				.append(It(
					'<span data-color="" style="background-color:transparent;" class="sp-clear-display"></span>'
					).attr("title", r.noColorSelectedText)).html())
		}
		return "<div class='sp-cf " + n + "'>" + i.join("") + "</div>"
	}

	function n() {}

	function Ft(t) {
		t.stopPropagation()
	}

	function Ht(t, e) {
		var n = Array.prototype.slice,
			r = n.call(arguments, 2);
		return function() {
			return t.apply(e, r.concat(n.call(arguments)))
		}
	}

	function Bt(r, i, e, t) {
		i = i || function() {}, e = e || function() {}, t = t || function() {};
		var o = document,
			s = !1,
			a = {},
			u = 0,
			c = 0,
			l = "ontouchstart" in window,
			n = {};

		function h(t) {
			t.stopPropagation && t.stopPropagation(), t.preventDefault && t.preventDefault(), t.returnValue = !1
		}

		function f(t) {
			if (s) {
				if (Dt && o.documentMode < 9 && !t.button) return p();
				var e = t.originalEvent && t.originalEvent.touches && t.originalEvent.touches[0],
					n = e && e.pageX || t.pageX,
					e = e && e.pageY || t.pageY,
					n = Math.max(0, Math.min(n - a.left, c)),
					e = Math.max(0, Math.min(e - a.top, u));
				l && h(t), i.apply(r, [n, e, t])
			}
		}

		function p() {
			s && (It(o).unbind(n), It(o.body).removeClass("sp-dragging"), setTimeout(function() {
				t.apply(r, arguments)
			}, 0)), s = !1
		}
		n.selectstart = h, n.dragstart = h, n["touchmove mousemove"] = f, n["touchend mouseup"] = p, It(r).bind(
			"touchstart mousedown",
			function(t) {
				(t.which ? 3 == t.which : 2 == t.button) || s || !1 !== e.apply(r, arguments) && (s = !0, u =
					It(r).height(), c = It(r).width(), a = It(r).offset(), It(o).bind(n), It(o.body)
					.addClass("sp-dragging"), f(t), h(t))
			})
	}

	function qt() {
		return It.fn.spectrum.inputTypeColorSupport()
	}
	var o = "spectrum.id";
	It.fn.spectrum = function(n, t) {
			if ("string" != typeof n) return this.spectrum("destroy").each(function() {
				var t = function(t, e) {
					var n, r, i, a = (i = t, (e = It.extend({}, Pt, e)).callbacks = {
							move: Ht(e.move, i),
							change: Ht(e.change, i),
							show: Ht(e.show, i),
							hide: Ht(e.hide, i),
							beforeShow: Ht(e.beforeShow, i)
						}, e),
						u = a.flat,
						o = a.showSelectionPalette,
						s = a.localStorageKey,
						e = a.theme,
						c = a.callbacks,
						l = (n = Et, function() {
							var t = this,
								e = arguments;
							r = r || setTimeout(function() {
								r = null, n.apply(t, e)
							}, 10)
						}),
						h = !10,
						f = !1,
						p = 0,
						d = 0,
						g = 0,
						m = 0,
						v = 0,
						y = 0,
						b = 0,
						w = 0,
						_ = 0,
						x = 0,
						C = 1,
						k = [],
						S = [],
						O = {},
						E = a.selectionPalette.slice(0),
						T = a.maxSelectionSize,
						A = "sp-dragging",
						I = null,
						j = t.ownerDocument,
						P = (j.body, It(t)),
						N = !1,
						D = It(Wt, j).addClass(e),
						R = D.find(".sp-picker-container"),
						M = D.find(".sp-color"),
						W = D.find(".sp-dragger"),
						L = D.find(".sp-hue"),
						F = D.find(".sp-slider"),
						H = D.find(".sp-alpha-inner"),
						B = D.find(".sp-alpha"),
						q = D.find(".sp-alpha-handle"),
						z = D.find(".sp-input"),
						U = D.find(".sp-palette"),
						G = D.find(".sp-initial"),
						V = D.find(".sp-cancel"),
						$ = D.find(".sp-clear"),
						X = D.find(".sp-choose"),
						Y = D.find(".sp-palette-toggle"),
						K = P.is("input"),
						t = K && "color" === P.attr("type") && qt(),
						Q = K && !u,
						J = Q ? It(Mt).addClass(e).addClass(a.className).addClass(a
							.replacerClassName) : It([]),
						Z = Q ? J : P,
						tt = J.find(".sp-preview-inner"),
						et = a.color || K && P.val(),
						nt = !1,
						rt = a.preferredFormat,
						it = !a.showButtons || a.clickoutFiresChange,
						ot = !et,
						st = a.allowEmpty && !t;

					function at() {
						if (a.showPaletteOnly && (a.showPalette = !0), Y.text(a.showPaletteOnly ? a
								.togglePaletteMoreText : a.togglePaletteLessText), a.palette) {
							k = a.palette.slice(0), S = It.isArray(k[0]) ? k : [k], O = {};
							for (var t = 0; t < S.length; t++)
								for (var e = 0; e < S[t].length; e++) {
									var n = tinycolor(S[t][e]).toRgbString();
									O[n] = !0
								}
						}
						D.toggleClass("sp-flat", u), D.toggleClass("sp-input-disabled", !a
								.showInput), D.toggleClass("sp-alpha-enabled", a.showAlpha), D
							.toggleClass("sp-clear-enabled", st), D.toggleClass(
								"sp-buttons-disabled", !a.showButtons), D.toggleClass(
								"sp-palette-buttons-disabled", !a.togglePaletteOnly), D.toggleClass(
								"sp-palette-disabled", !a.showPalette), D.toggleClass(
								"sp-palette-only", a.showPaletteOnly), D.toggleClass(
								"sp-initial-disabled", !a.showInitial), D.addClass(a.className)
							.addClass(a.containerClassName), Et()
					}

					function ut() {
						if (s && window.localStorage) {
							try {
								var t = window.localStorage[s].split(",#");
								1 < t.length && (delete window.localStorage[s], It.each(t, function(
									t, e) {
									ct(e)
								}))
							} catch (t) {}
							try {
								E = window.localStorage[s].split(";")
							} catch (t) {}
						}
					}

					function ct(t) {
						if (o) {
							var e = tinycolor(t).toRgbString();
							if (!O[e] && -1 === It.inArray(e, E))
								for (E.push(e); E.length > T;) E.shift();
							if (s && window.localStorage) try {
								window.localStorage[s] = E.join(";")
							} catch (t) {}
						}
					}

					function lt() {
						var n = xt(),
							t = It.map(S, function(t, e) {
								return Lt(t, n, "sp-palette-row sp-palette-row-" + e, a)
							});
						ut(), E && t.push(Lt(function() {
							var t = [];
							if (a.showPalette)
								for (var e = 0; e < E.length; e++) {
									var n = tinycolor(E[e]).toRgbString();
									O[n] || t.push(E[e])
								}
							return t.reverse().slice(0, a.maxSelectionSize)
						}(), n, "sp-palette-row sp-palette-row-selection", a)), U.html(t.join(
							""))
					}

					function ht() {
						var t, e;
						a.showInitial && (t = nt, e = xt(), G.html(Lt([t, e], e,
							"sp-palette-row-initial", a)))
					}

					function ft() {
						(d <= 0 || p <= 0 || m <= 0) && Et(), f = !0, D.addClass(A), I = null, P
							.trigger("dragstart.spectrum", [xt()])
					}

					function pt() {
						f = !1, D.removeClass(A), P.trigger("dragstop.spectrum", [xt()])
					}

					function dt() {
						var t = z.val();
						null !== t && "" !== t || !st ? (t = tinycolor(t)).isValid() ? (_t(t), Ot(!
							0)) : z.addClass("sp-validation-error") : (_t(null), Ot(!0))
					}

					function gt() {
						(h ? bt : mt)()
					}

					function mt() {
						var t = It.Event("beforeShow.spectrum");
						h ? Et() : (P.trigger(t, [xt()]), !1 === c.beforeShow(xt()) || t
							.isDefaultPrevented() || (function() {
									for (var t = 0; t < Nt.length; t++) Nt[t] && Nt[t].hide()
								}(), h = !0, It(j).bind("keydown.spectrum", vt), It(j).bind(
									"click.spectrum", yt), It(window).bind("resize.spectrum",
								l), J.addClass("sp-active"), D.removeClass("sp-hidden"), Et(),
								kt(), nt = xt(), ht(), c.show(nt), P.trigger("show.spectrum", [
									nt
								])))
					}

					function vt(t) {
						27 === t.keyCode && bt()
					}

					function yt(t) {
						2 != t.button && (f || (it ? Ot(!0) : wt(), bt()))
					}

					function bt() {
						h && !u && (h = !1, It(j).unbind("keydown.spectrum", vt), It(j).unbind(
								"click.spectrum", yt), It(window).unbind("resize.spectrum", l),
							J.removeClass("sp-active"), D.addClass("sp-hidden"), c.hide(xt()), P
							.trigger("hide.spectrum", [xt()]))
					}

					function wt() {
						_t(nt, !0)
					}

					function _t(t, e) {
						var n;
						tinycolor.equals(t, xt()) ? kt() : (!t && st ? ot = !0 : (ot = !1, t = (n =
								tinycolor(t)).toHsv(), w = t.h % 360 / 360, _ = t.s, x = t
							.v, C = t.a), kt(), n && n.isValid() && !e && (rt = a
							.preferredFormat || n.getFormat()))
					}

					function xt(t) {
						return t = t || {}, st && ot ? null : tinycolor.fromRatio({
							h: w,
							s: _,
							v: x,
							a: Math.round(100 * C) / 100
						}, {
							format: t.format || rt
						})
					}

					function Ct() {
						kt(), c.move(xt()), P.trigger("move.spectrum", [xt()])
					}

					function kt() {
						z.removeClass("sp-validation-error"), St();
						var t = tinycolor.fromRatio({
							h: w,
							s: 1,
							v: 1
						});
						M.css("background-color", t.toHexString());
						var e = rt;
						C < 1 && (0 !== C || "name" !== e) && ("hex" !== e && "hex3" !== e &&
							"hex6" !== e && "name" !== e || (e = "rgb"));
						var n, r, i = xt({
								format: e
							}),
							o = "";
						tt.removeClass("sp-clear-display"), tt.css("background-color",
							"transparent"), !i && st ? tt.addClass("sp-clear-display") : (n = i
							.toHexString(), r = i.toRgbString(), Rt || 1 === i.alpha ? tt.css(
								"background-color", r) : (tt.css("background-color",
								"transparent"), tt.css("filter", i.toFilter())), a.showAlpha &&
							((t = i.toRgb()).a = 0, t = "linear-gradient(left, " + (r =
								tinycolor(t).toRgbString()) + ", " + n + ")", Dt ? H.css(
								"filter", tinycolor(r).toFilter({
									gradientType: 1
								}, n)) : (H.css("background", "-webkit-" + t), H.css(
								"background", "-moz-" + t), H.css("background", "-ms-" +
								t), H.css("background", "linear-gradient(to right, " +
								r + ", " + n + ")"))), o = i.toString(e)), a.showInput && z.val(
							o), a.showPalette && lt(), ht()
					}

					function St() {
						var t = _,
							e = x;
						st && ot ? (q.hide(), F.hide(), W.hide()) : (q.show(), F.show(), W.show(),
							t = t * p, e = d - e * d, t = Math.max(-g, Math.min(p - g, t - g)),
							e = Math.max(-g, Math.min(d - g, e - g)), W.css({
								top: e + "px",
								left: t + "px"
							}), t = C * v, q.css({
								left: t - y / 2 + "px"
							}), t = w * m, F.css({
								top: t - b + "px"
							}))
					}

					function Ot(t) {
						var e = xt(),
							n = "";
						e && (n = e.toString(rt), ct(e)), K && P.val(n), t && (c.change(e), P
							.trigger("change", [e]))
					}

					function Et() {
						var t, e, n, r, i, o, s;
						h && (p = M.width(), d = M.height(), g = W.height(), L.width(), m = L
							.height(), b = F.height(), v = B.width(), y = q.width(), u || (D
								.css("position", "absolute"), a.offset ? D.offset(a.offset) : D
								.offset((s = Z, t = (i = D).outerWidth(), e = i.outerHeight(),
									n = s.outerHeight(), i = (r = (o = i[0].ownerDocument)
										.documentElement).clientWidth + It(o).scrollLeft(),
									o = r.clientHeight + It(o).scrollTop(), (s = s.offset())
									.top += n, s.left -= Math.min(s.left, s.left + t > i &&
										t < i ? Math.abs(s.left + t - i) : 0), s.top -= Math
									.min(s.top, s.top + e > o && e < o ? Math.abs(+(e +
										n)) : 0), s))), St(), a.showPalette && lt(), P.trigger(
								"reflow.spectrum"))
					}

					function Tt() {
						bt(), N = !0, P.attr("disabled", !0), Z.addClass("sp-disabled")
					}! function() {
						function t(t) {
							return t.data && t.data.ignore ? (_t(It(t.target).closest(
								".sp-thumb-el").data("color")), Ct()) : (_t(It(t.target)
									.closest(".sp-thumb-el").data("color")), Ct(), Ot(!0), a
								.hideAfterPaletteSelect && bt()), !1
						}
						Dt && D.find("*:not(input)").attr("unselectable", "on"), at(), Q && P.after(
								J).hide(), st || $.hide(), u ? P.after(D).hide() : (1 !== (e =
									"parent" === a.appendTo ? P.parent() : It(a.appendTo)).length &&
								(e = It("body")), e.append(D)), ut(), Z.bind(
								"click.spectrum touchstart.spectrum",
								function(t) {
									N || gt(), t.stopPropagation(), It(t.target).is("input") || t
										.preventDefault()
								}), !P.is(":disabled") && !0 !== a.disabled || Tt(), D.click(Ft), z
							.change(dt), z.bind("paste", function() {
								setTimeout(dt, 1)
							}), z.keydown(function(t) {
								13 == t.keyCode && dt()
							}), V.text(a.cancelText), V.bind("click.spectrum", function(t) {
								t.stopPropagation(), t.preventDefault(), wt(), bt()
							}), $.attr("title", a.clearText), $.bind("click.spectrum", function(t) {
								t.stopPropagation(), t.preventDefault(), ot = !0, Ct(), u && Ot(
									!0)
							}), X.text(a.chooseText), X.bind("click.spectrum", function(t) {
								t.stopPropagation(), t.preventDefault(), Dt && z.is(":focus") &&
									z.trigger("change"), z.hasClass("sp-validation-error") || (
										Ot(!0), bt())
							}), Y.text(a.showPaletteOnly ? a.togglePaletteMoreText : a
								.togglePaletteLessText), Y.bind("click.spectrum", function(t) {
								t.stopPropagation(), t.preventDefault(), a.showPaletteOnly = !a
									.showPaletteOnly, a.showPaletteOnly || u || D.css("left",
										"-=" + (R.outerWidth(!0) + 5)), at()
							}), Bt(B, function(t, e, n) {
								C = t / v, ot = !1, n.shiftKey && (C = Math.round(10 * C) / 10),
									Ct()
							}, ft, pt), Bt(L, function(t, e) {
								w = parseFloat(e / m), ot = !1, a.showAlpha || (C = 1), Ct()
							}, ft, pt), Bt(M, function(t, e, n) {
								n.shiftKey ? I || (n = _ * p, r = d - x * d, r = Math.abs(t -
									n) > Math.abs(e - r), I = r ? "x" : "y") : I = null;
								var r = !I || "y" === I;
								I && "x" !== I || (_ = parseFloat(t / p)), r && (x = parseFloat(
									(d - e) / d)), ot = !1, a.showAlpha || (C = 1), Ct()
							}, ft, pt), et ? (_t(et), kt(), rt = a.preferredFormat || tinycolor(et)
								.format, ct(et)) : kt(), u && mt();
						var e = Dt ? "mousedown.spectrum" : "click.spectrum touchstart.spectrum";
						U.delegate(".sp-thumb-el", e, t), G.delegate(".sp-thumb-el:nth-child(1)",
						e, {
							ignore: !0
						}, t)
					}();
					var At = {
						show: mt,
						hide: bt,
						toggle: gt,
						reflow: Et,
						option: function(t, e) {
							return t === jt ? It.extend({}, a) : e === jt ? a[t] : (a[t] =
								e, "preferredFormat" === t && (rt = a.preferredFormat),
								void at())
						},
						enable: function() {
							N = !1, P.attr("disabled", !1), Z.removeClass("sp-disabled")
						},
						disable: Tt,
						offset: function(t) {
							a.offset = t, Et()
						},
						set: function(t) {
							_t(t), Ot()
						},
						get: xt,
						destroy: function() {
							P.show(), Z.unbind("click.spectrum touchstart.spectrum"), D
								.remove(), J.remove(), Nt[At.id] = null
						},
						container: D
					};
					return At.id = Nt.push(At) - 1, At
				}(this, It.extend({}, n, It(this).data()));
				It(this).data(o, t.id)
			});
			var r = this,
				i = Array.prototype.slice.call(arguments, 1);
			return this.each(function() {
				var t = Nt[It(this).data(o)];
				if (t) {
					var e = t[n];
					if (!e) throw new Error("Spectrum: no such method: '" + n + "'");
					"get" == n ? r = t.get() : "container" == n ? r = t.container : "option" == n ? r = t
						.option.apply(t, i) : "destroy" == n ? (t.destroy(), It(this).removeData(o)) : e
						.apply(t, i)
				}
			}), r
		}, It.fn.spectrum.load = !0, It.fn.spectrum.loadOpts = {}, It.fn.spectrum.draggable = Bt, It.fn.spectrum
		.defaults = Pt, It.fn.spectrum.inputTypeColorSupport = function t() {
			var e;
			return void 0 === t._cachedResult && (e = It("<input type='color'/>")[0], t._cachedResult = "color" ===
				e.type && "" !== e.value), t._cachedResult
		}, It.spectrum = {}, It.spectrum.localization = {}, It.spectrum.palettes = {}, It.fn.spectrum
		.processNativeColorInputs = function() {
			var t = It("input[type=color]");
			t.length && !qt() && t.spectrum({
				preferredFormat: "hex6"
			})
		},
		function() {
			var d = /^[\s,#]+/,
				g = /\s+$/,
				m = 0,
				v = Math,
				y = v.round,
				b = v.min,
				w = v.max,
				t = v.random,
				_ = function(t, e) {
					if (e = e || {}, (t = t || "") instanceof _) return t;
					if (!(this instanceof _)) return new _(t, e);
					var n, r, i, o, s, a, u, c, l, h, f, l = (c = {
						r: 0,
						g: 0,
						b: 0
					}, f = h = !(l = 1), "string" == typeof(n = t) && (n = function(t) {
						t = t.replace(d, "").replace(g, "").toLowerCase();
						var e, n = !1;
						if (O[t]) t = O[t], n = !0;
						else if ("transparent" == t) return {
							r: 0,
							g: 0,
							b: 0,
							a: 0,
							format: "name"
						};
						return (e = M.rgb.exec(t)) ? {
							r: e[1],
							g: e[2],
							b: e[3]
						} : (e = M.rgba.exec(t)) ? {
							r: e[1],
							g: e[2],
							b: e[3],
							a: e[4]
						} : (e = M.hsl.exec(t)) ? {
							h: e[1],
							s: e[2],
							l: e[3]
						} : (e = M.hsla.exec(t)) ? {
							h: e[1],
							s: e[2],
							l: e[3],
							a: e[4]
						} : (e = M.hsv.exec(t)) ? {
							h: e[1],
							s: e[2],
							v: e[3]
						} : (e = M.hsva.exec(t)) ? {
							h: e[1],
							s: e[2],
							v: e[3],
							a: e[4]
						} : (e = M.hex8.exec(t)) ? {
							a: j(e[1]) / 255,
							r: j(e[2]),
							g: j(e[3]),
							b: j(e[4]),
							format: n ? "name" : "hex8"
						} : (e = M.hex6.exec(t)) ? {
							r: j(e[1]),
							g: j(e[2]),
							b: j(e[3]),
							format: n ? "name" : "hex"
						} : !!(e = M.hex3.exec(t)) && {
							r: j(e[1] + "" + e[1]),
							g: j(e[2] + "" + e[2]),
							b: j(e[3] + "" + e[3]),
							format: n ? "name" : "hex"
						}
					}(n)), "object" == typeof n && (n.hasOwnProperty("r") && n.hasOwnProperty("g") && n
						.hasOwnProperty("b") ? (s = n.r, a = n.g, u = n.b, c = {
							r: 255 * A(s, 255),
							g: 255 * A(a, 255),
							b: 255 * A(u, 255)
						}, h = !0, f = "%" === String(n.r).substr(-1) ? "prgb" : "rgb") : n.hasOwnProperty(
							"h") && n.hasOwnProperty("s") && n.hasOwnProperty("v") ? (n.s = N(n.s), n.v = N(
							n.v), c = function(t, e, n) {
							t = 6 * A(t, 360), e = A(e, 100), n = A(n, 100);
							var r = v.floor(t),
								i = t - r,
								o = n * (1 - e),
								t = n * (1 - i * e),
								e = n * (1 - (1 - i) * e),
								r = r % 6;
							return {
								r: 255 * [n, t, o, o, e, n][r],
								g: 255 * [e, n, n, t, o, o][r],
								b: 255 * [o, o, e, n, n, t][r]
							}
						}(n.h, n.s, n.v), h = !0, f = "hsv") : n.hasOwnProperty("h") && n.hasOwnProperty(
							"s") && n.hasOwnProperty("l") && (n.s = N(n.s), n.l = N(n.l), s = n.h, a = n.s,
							u = n.l, s = A(s, 360), a = A(a, 100), u = A(u, 100), 0 === a ? r = i = o = u :
							(r = p(a = 2 * u - (u = u < .5 ? u * (1 + a) : u + a - u * a), u, s + 1 / 3),
								i = p(a, u, s), o = p(a, u, s - 1 / 3)), c = {
								r: 255 * r,
								g: 255 * i,
								b: 255 * o
							}, h = !0, f = "hsl"), n.hasOwnProperty("a") && (l = n.a)), l = T(l), {
						ok: h,
						format: n.format || f,
						r: b(255, w(c.r, 0)),
						g: b(255, w(c.g, 0)),
						b: b(255, w(c.b, 0)),
						a: l
					});

					function p(t, e, n) {
						return n < 0 && (n += 1), 1 < n && --n, n < 1 / 6 ? t + 6 * (e - t) * n : n < .5 ? e : n <
							2 / 3 ? t + (e - t) * (2 / 3 - n) * 6 : t
					}
					this._originalInput = t, this._r = l.r, this._g = l.g, this._b = l.b, this._a = l.a, this
						._roundA = y(100 * this._a) / 100, this._format = e.format || l.format, this._gradientType =
						e.gradientType, this._r < 1 && (this._r = y(this._r)), this._g < 1 && (this._g = y(this
						._g)), this._b < 1 && (this._b = y(this._b)), this._ok = l.ok, this._tc_id = m++
				};

			function r(t, e, n) {
				t = A(t, 255), e = A(e, 255), n = A(n, 255);
				var r, i = w(t, e, n),
					o = b(t, e, n),
					s = (i + o) / 2;
				if (i == o) r = u = 0;
				else {
					var a = i - o,
						u = .5 < s ? a / (2 - i - o) : a / (i + o);
					switch (i) {
						case t:
							r = (e - n) / a + (e < n ? 6 : 0);
							break;
						case e:
							r = (n - t) / a + 2;
							break;
						case n:
							r = (t - e) / a + 4
					}
					r /= 6
				}
				return {
					h: r,
					s: u,
					l: s
				}
			}

			function i(t, e, n) {
				t = A(t, 255), e = A(e, 255), n = A(n, 255);
				var r, i = w(t, e, n),
					o = b(t, e, n),
					s = i,
					a = i - o,
					u = 0 === i ? 0 : a / i;
				if (i == o) r = 0;
				else {
					switch (i) {
						case t:
							r = (e - n) / a + (e < n ? 6 : 0);
							break;
						case e:
							r = (n - t) / a + 2;
							break;
						case n:
							r = (t - e) / a + 4
					}
					r /= 6
				}
				return {
					h: r,
					s: u,
					v: s
				}
			}

			function e(t, e, n, r) {
				n = [P(y(t).toString(16)), P(y(e).toString(16)), P(y(n).toString(16))];
				return r && n[0].charAt(0) == n[0].charAt(1) && n[1].charAt(0) == n[1].charAt(1) && n[2].charAt(
					0) == n[2].charAt(1) ? n[0].charAt(0) + n[1].charAt(0) + n[2].charAt(0) : n.join("")
			}

			function o(t, e, n, r) {
				return [P(Math.round(255 * parseFloat(r)).toString(16)), P(y(t).toString(16)), P(y(e).toString(16)),
					P(y(n).toString(16))
				].join("")
			}

			function n(t, e) {
				e = 0 === e ? 0 : e || 10;
				t = _(t).toHsl();
				return t.s -= e / 100, t.s = I(t.s), _(t)
			}

			function s(t, e) {
				e = 0 === e ? 0 : e || 10;
				t = _(t).toHsl();
				return t.s += e / 100, t.s = I(t.s), _(t)
			}

			function a(t) {
				return _(t).desaturate(100)
			}

			function u(t, e) {
				e = 0 === e ? 0 : e || 10;
				t = _(t).toHsl();
				return t.l += e / 100, t.l = I(t.l), _(t)
			}

			function c(t, e) {
				e = 0 === e ? 0 : e || 10;
				t = _(t).toRgb();
				return t.r = w(0, b(255, t.r - y(-e / 100 * 255))), t.g = w(0, b(255, t.g - y(-e / 100 * 255))), t
					.b = w(0, b(255, t.b - y(-e / 100 * 255))), _(t)
			}

			function l(t, e) {
				e = 0 === e ? 0 : e || 10;
				t = _(t).toHsl();
				return t.l -= e / 100, t.l = I(t.l), _(t)
			}

			function h(t, e) {
				t = _(t).toHsl(), e = (y(t.h) + e) % 360;
				return t.h = e < 0 ? 360 + e : e, _(t)
			}

			function f(t) {
				t = _(t).toHsl();
				return t.h = (t.h + 180) % 360, _(t)
			}

			function p(t) {
				var e = _(t).toHsl(),
					n = e.h;
				return [_(t), _({
					h: (n + 120) % 360,
					s: e.s,
					l: e.l
				}), _({
					h: (n + 240) % 360,
					s: e.s,
					l: e.l
				})]
			}

			function x(t) {
				var e = _(t).toHsl(),
					n = e.h;
				return [_(t), _({
					h: (n + 90) % 360,
					s: e.s,
					l: e.l
				}), _({
					h: (n + 180) % 360,
					s: e.s,
					l: e.l
				}), _({
					h: (n + 270) % 360,
					s: e.s,
					l: e.l
				})]
			}

			function C(t) {
				var e = _(t).toHsl(),
					n = e.h;
				return [_(t), _({
					h: (n + 72) % 360,
					s: e.s,
					l: e.l
				}), _({
					h: (n + 216) % 360,
					s: e.s,
					l: e.l
				})]
			}

			function k(t, e, n) {
				e = e || 6, n = n || 30;
				var r = _(t).toHsl(),
					i = 360 / n,
					o = [_(t)];
				for (r.h = (r.h - (i * e >> 1) + 720) % 360; --e;) r.h = (r.h + i) % 360, o.push(_(r));
				return o
			}

			function S(t, e) {
				e = e || 6;
				for (var t = _(t).toHsv(), n = t.h, r = t.s, i = t.v, o = [], s = 1 / e; e--;) o.push(_({
					h: n,
					s: r,
					v: i
				})), i = (i + s) % 1;
				return o
			}
			_.prototype = {
				isDark: function() {
					return this.getBrightness() < 128
				},
				isLight: function() {
					return !this.isDark()
				},
				isValid: function() {
					return this._ok
				},
				getOriginalInput: function() {
					return this._originalInput
				},
				getFormat: function() {
					return this._format
				},
				getAlpha: function() {
					return this._a
				},
				getBrightness: function() {
					var t = this.toRgb();
					return (299 * t.r + 587 * t.g + 114 * t.b) / 1e3
				},
				setAlpha: function(t) {
					return this._a = T(t), this._roundA = y(100 * this._a) / 100, this
				},
				toHsv: function() {
					var t = i(this._r, this._g, this._b);
					return {
						h: 360 * t.h,
						s: t.s,
						v: t.v,
						a: this._a
					}
				},
				toHsvString: function() {
					var t = i(this._r, this._g, this._b),
						e = y(360 * t.h),
						n = y(100 * t.s),
						t = y(100 * t.v);
					return 1 == this._a ? "hsv(" + e + ", " + n + "%, " + t + "%)" : "hsva(" + e + ", " +
						n + "%, " + t + "%, " + this._roundA + ")"
				},
				toHsl: function() {
					var t = r(this._r, this._g, this._b);
					return {
						h: 360 * t.h,
						s: t.s,
						l: t.l,
						a: this._a
					}
				},
				toHslString: function() {
					var t = r(this._r, this._g, this._b),
						e = y(360 * t.h),
						n = y(100 * t.s),
						t = y(100 * t.l);
					return 1 == this._a ? "hsl(" + e + ", " + n + "%, " + t + "%)" : "hsla(" + e + ", " +
						n + "%, " + t + "%, " + this._roundA + ")"
				},
				toHex: function(t) {
					return e(this._r, this._g, this._b, t)
				},
				toHexString: function(t) {
					return "#" + this.toHex(t)
				},
				toHex8: function() {
					return o(this._r, this._g, this._b, this._a)
				},
				toHex8String: function() {
					return "#" + this.toHex8()
				},
				toRgb: function() {
					return {
						r: y(this._r),
						g: y(this._g),
						b: y(this._b),
						a: this._a
					}
				},
				toRgbString: function() {
					return 1 == this._a ? "rgb(" + y(this._r) + ", " + y(this._g) + ", " + y(this._b) +
						")" : "rgba(" + y(this._r) + ", " + y(this._g) + ", " + y(this._b) + ", " + this
						._roundA + ")"
				},
				toPercentageRgb: function() {
					return {
						r: y(100 * A(this._r, 255)) + "%",
						g: y(100 * A(this._g, 255)) + "%",
						b: y(100 * A(this._b, 255)) + "%",
						a: this._a
					}
				},
				toPercentageRgbString: function() {
					return 1 == this._a ? "rgb(" + y(100 * A(this._r, 255)) + "%, " + y(100 * A(this._g,
							255)) + "%, " + y(100 * A(this._b, 255)) + "%)" : "rgba(" + y(100 * A(this._r,
							255)) + "%, " + y(100 * A(this._g, 255)) + "%, " + y(100 * A(this._b, 255)) +
						"%, " + this._roundA + ")"
				},
				toName: function() {
					return 0 === this._a ? "transparent" : !(this._a < 1) && (E[e(this._r, this._g, this._b,
						!0)] || !1)
				},
				toFilter: function(t) {
					var e = "#" + o(this._r, this._g, this._b, this._a),
						n = e,
						r = this._gradientType ? "GradientType = 1, " : "";
					return t && (n = _(t).toHex8String()), "progid:DXImageTransform.Microsoft.gradient(" +
						r + "startColorstr=" + e + ",endColorstr=" + n + ")"
				},
				toString: function(t) {
					var e = !!t;
					t = t || this._format;
					var n = !1,
						r = this._a < 1 && 0 <= this._a;
					return e || !r || "hex" !== t && "hex6" !== t && "hex3" !== t && "name" !== t ? (
							"rgb" === t && (n = this.toRgbString()), "prgb" === t && (n = this
								.toPercentageRgbString()), "hex" !== t && "hex6" !== t || (n = this
								.toHexString()), "hex3" === t && (n = this.toHexString(!0)), "hex8" === t &&
							(n = this.toHex8String()), "name" === t && (n = this.toName()), "hsl" === t && (
								n = this.toHslString()), "hsv" === t && (n = this.toHsvString()), n || this
							.toHexString()) : "name" === t && 0 === this._a ? this.toName() : this
						.toRgbString()
				},
				_applyModification: function(t, e) {
					e = t.apply(null, [this].concat([].slice.call(e)));
					return this._r = e._r, this._g = e._g, this._b = e._b, this.setAlpha(e._a), this
				},
				lighten: function() {
					return this._applyModification(u, arguments)
				},
				brighten: function() {
					return this._applyModification(c, arguments)
				},
				darken: function() {
					return this._applyModification(l, arguments)
				},
				desaturate: function() {
					return this._applyModification(n, arguments)
				},
				saturate: function() {
					return this._applyModification(s, arguments)
				},
				greyscale: function() {
					return this._applyModification(a, arguments)
				},
				spin: function() {
					return this._applyModification(h, arguments)
				},
				_applyCombination: function(t, e) {
					return t.apply(null, [this].concat([].slice.call(e)))
				},
				analogous: function() {
					return this._applyCombination(k, arguments)
				},
				complement: function() {
					return this._applyCombination(f, arguments)
				},
				monochromatic: function() {
					return this._applyCombination(S, arguments)
				},
				splitcomplement: function() {
					return this._applyCombination(C, arguments)
				},
				triad: function() {
					return this._applyCombination(p, arguments)
				},
				tetrad: function() {
					return this._applyCombination(x, arguments)
				}
			}, _.fromRatio = function(t, e) {
				if ("object" == typeof t) {
					var n, r = {};
					for (n in t) t.hasOwnProperty(n) && (r[n] = "a" === n ? t[n] : N(t[n]));
					t = r
				}
				return _(t, e)
			}, _.equals = function(t, e) {
				return !(!t || !e) && _(t).toRgbString() == _(e).toRgbString()
			}, _.random = function() {
				return _.fromRatio({
					r: t(),
					g: t(),
					b: t()
				})
			}, _.mix = function(t, e, n) {
				n = 0 === n ? 0 : n || 50;
				var r = _(t).toRgb(),
					i = _(e).toRgb(),
					t = n / 100,
					e = 2 * t - 1,
					n = i.a - r.a,
					n = 1 - (e = (1 + (e = e * n == -1 ? e : (e + n) / (1 + e * n))) / 2),
					t = {
						r: i.r * e + r.r * n,
						g: i.g * e + r.g * n,
						b: i.b * e + r.b * n,
						a: i.a * t + r.a * (1 - t)
					};
				return _(t)
			}, _.readability = function(t, e) {
				var n = _(t),
					r = _(e),
					t = n.toRgb(),
					e = r.toRgb(),
					n = n.getBrightness(),
					r = r.getBrightness(),
					e = Math.max(t.r, e.r) - Math.min(t.r, e.r) + Math.max(t.g, e.g) - Math.min(t.g, e.g) + Math
					.max(t.b, e.b) - Math.min(t.b, e.b);
				return {
					brightness: Math.abs(n - r),
					color: e
				}
			}, _.isReadable = function(t, e) {
				e = _.readability(t, e);
				return 125 < e.brightness && 500 < e.color
			}, _.mostReadable = function(t, e) {
				for (var n = null, r = 0, i = !1, o = 0; o < e.length; o++) {
					var s = _.readability(t, e[o]),
						a = 125 < s.brightness && 500 < s.color,
						s = s.brightness / 125 * 3 + s.color / 500;
					(a && !i || a && i && r < s || !a && !i && r < s) && (i = a, r = s, n = _(e[o]))
				}
				return n
			};
			var O = _.names = {
					aliceblue: "f0f8ff",
					antiquewhite: "faebd7",
					aqua: "0ff",
					aquamarine: "7fffd4",
					azure: "f0ffff",
					beige: "f5f5dc",
					bisque: "ffe4c4",
					black: "000",
					blanchedalmond: "ffebcd",
					blue: "00f",
					blueviolet: "8a2be2",
					brown: "a52a2a",
					burlywood: "deb887",
					burntsienna: "ea7e5d",
					cadetblue: "5f9ea0",
					chartreuse: "7fff00",
					chocolate: "d2691e",
					coral: "ff7f50",
					cornflowerblue: "6495ed",
					cornsilk: "fff8dc",
					crimson: "dc143c",
					cyan: "0ff",
					darkblue: "00008b",
					darkcyan: "008b8b",
					darkgoldenrod: "b8860b",
					darkgray: "a9a9a9",
					darkgreen: "006400",
					darkgrey: "a9a9a9",
					darkkhaki: "bdb76b",
					darkmagenta: "8b008b",
					darkolivegreen: "556b2f",
					darkorange: "ff8c00",
					darkorchid: "9932cc",
					darkred: "8b0000",
					darksalmon: "e9967a",
					darkseagreen: "8fbc8f",
					darkslateblue: "483d8b",
					darkslategray: "2f4f4f",
					darkslategrey: "2f4f4f",
					darkturquoise: "00ced1",
					darkviolet: "9400d3",
					deeppink: "ff1493",
					deepskyblue: "00bfff",
					dimgray: "696969",
					dimgrey: "696969",
					dodgerblue: "1e90ff",
					firebrick: "b22222",
					floralwhite: "fffaf0",
					forestgreen: "228b22",
					fuchsia: "f0f",
					gainsboro: "dcdcdc",
					ghostwhite: "f8f8ff",
					gold: "ffd700",
					goldenrod: "daa520",
					gray: "808080",
					green: "008000",
					greenyellow: "adff2f",
					grey: "808080",
					honeydew: "f0fff0",
					hotpink: "ff69b4",
					indianred: "cd5c5c",
					indigo: "4b0082",
					ivory: "fffff0",
					khaki: "f0e68c",
					lavender: "e6e6fa",
					lavenderblush: "fff0f5",
					lawngreen: "7cfc00",
					lemonchiffon: "fffacd",
					lightblue: "add8e6",
					lightcoral: "f08080",
					lightcyan: "e0ffff",
					lightgoldenrodyellow: "fafad2",
					lightgray: "d3d3d3",
					lightgreen: "90ee90",
					lightgrey: "d3d3d3",
					lightpink: "ffb6c1",
					lightsalmon: "ffa07a",
					lightseagreen: "20b2aa",
					lightskyblue: "87cefa",
					lightslategray: "789",
					lightslategrey: "789",
					lightsteelblue: "b0c4de",
					lightyellow: "ffffe0",
					lime: "0f0",
					limegreen: "32cd32",
					linen: "faf0e6",
					magenta: "f0f",
					maroon: "800000",
					mediumaquamarine: "66cdaa",
					mediumblue: "0000cd",
					mediumorchid: "ba55d3",
					mediumpurple: "9370db",
					mediumseagreen: "3cb371",
					mediumslateblue: "7b68ee",
					mediumspringgreen: "00fa9a",
					mediumturquoise: "48d1cc",
					mediumvioletred: "c71585",
					midnightblue: "191970",
					mintcream: "f5fffa",
					mistyrose: "ffe4e1",
					moccasin: "ffe4b5",
					navajowhite: "ffdead",
					navy: "000080",
					oldlace: "fdf5e6",
					olive: "808000",
					olivedrab: "6b8e23",
					orange: "ffa500",
					orangered: "ff4500",
					orchid: "da70d6",
					palegoldenrod: "eee8aa",
					palegreen: "98fb98",
					paleturquoise: "afeeee",
					palevioletred: "db7093",
					papayawhip: "ffefd5",
					peachpuff: "ffdab9",
					peru: "cd853f",
					pink: "ffc0cb",
					plum: "dda0dd",
					powderblue: "b0e0e6",
					purple: "800080",
					rebeccapurple: "663399",
					red: "f00",
					rosybrown: "bc8f8f",
					royalblue: "4169e1",
					saddlebrown: "8b4513",
					salmon: "fa8072",
					sandybrown: "f4a460",
					seagreen: "2e8b57",
					seashell: "fff5ee",
					sienna: "a0522d",
					silver: "c0c0c0",
					skyblue: "87ceeb",
					slateblue: "6a5acd",
					slategray: "708090",
					slategrey: "708090",
					snow: "fffafa",
					springgreen: "00ff7f",
					steelblue: "4682b4",
					tan: "d2b48c",
					teal: "008080",
					thistle: "d8bfd8",
					tomato: "ff6347",
					turquoise: "40e0d0",
					violet: "ee82ee",
					wheat: "f5deb3",
					white: "fff",
					whitesmoke: "f5f5f5",
					yellow: "ff0",
					yellowgreen: "9acd32"
				},
				E = _.hexNames = function(t) {
					var e, n = {};
					for (e in t) t.hasOwnProperty(e) && (n[t[e]] = e);
					return n
				}(O);

			function T(t) {
				return t = parseFloat(t), (isNaN(t) || t < 0 || 1 < t) && (t = 1), t
			}

			function A(t, e) {
				"string" == typeof(n = t) && -1 != n.indexOf(".") && 1 === parseFloat(n) && (t = "100%");
				var n = "string" == typeof t && -1 != t.indexOf("%");
				return t = b(e, w(0, parseFloat(t))), n && (t = parseInt(t * e, 10) / 100), v.abs(t - e) < 1e-6 ?
					1 : t % e / parseFloat(e)
			}

			function I(t) {
				return b(1, w(0, t))
			}

			function j(t) {
				return parseInt(t, 16)
			}

			function P(t) {
				return 1 == t.length ? "0" + t : "" + t
			}

			function N(t) {
				return t <= 1 && (t = 100 * t + "%"), t
			}
			var D, R, M = (D = "[\\s|\\(]+(" + (R = "(?:[-\\+]?\\d*\\.\\d+%?)|(?:[-\\+]?\\d+%?)") + ")[,|\\s]+(" +
				R + ")[,|\\s]+(" + R + ")\\s*\\)?", R = "[\\s|\\(]+(" + R + ")[,|\\s]+(" + R + ")[,|\\s]+(" +
				R + ")[,|\\s]+(" + R + ")\\s*\\)?", {
					rgb: new RegExp("rgb" + D),
					rgba: new RegExp("rgba" + R),
					hsl: new RegExp("hsl" + D),
					hsla: new RegExp("hsla" + R),
					hsv: new RegExp("hsv" + D),
					hsva: new RegExp("hsva" + R),
					hex3: /^([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,
					hex6: /^([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,
					hex8: /^([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/
				});
			window.tinycolor = _
		}(), It(function() {
			It.fn.spectrum.load && It.fn.spectrum.processNativeColorInputs()
		})
}),
function() {
	var t = function(x) {
		x.ui = x.ui || {}, x.ui.version = "1.12.1";
		var i, r, C, k, o, s, a, u, c, n, l = 0,
			h = Array.prototype.slice;

		function S(t, e, n) {
			return [parseFloat(t[0]) * (c.test(t[0]) ? e / 100 : 1), parseFloat(t[1]) * (c.test(t[1]) ? n / 100 :
				1)]
		}

		function O(t, e) {
			return parseInt(x.css(t, e), 10) || 0
		}
		x.cleanData = (i = x.cleanData, function(t) {
				for (var e, n, r = 0; null != (n = t[r]); r++) try {
					(e = x._data(n, "events")) && e.remove && x(n).triggerHandler("remove")
				} catch (t) {}
				i(t)
			}), x.widget = function(t, n, e) {
				var r, i, o, s = {},
					a = t.split(".")[0],
					u = a + "-" + (t = t.split(".")[1]);
				return e || (e = n, n = x.Widget), x.isArray(e) && (e = x.extend.apply(null, [{}].concat(e))), x
					.expr[":"][u.toLowerCase()] = function(t) {
						return !!x.data(t, u)
					}, x[a] = x[a] || {}, r = x[a][t], i = x[a][t] = function(t, e) {
						if (!this._createWidget) return new i(t, e);
						arguments.length && this._createWidget(t, e)
					}, x.extend(i, r, {
						version: e.version,
						_proto: x.extend({}, e),
						_childConstructors: []
					}), (o = new n).options = x.widget.extend({}, o.options), x.each(e, function(e, r) {
						function i() {
							return n.prototype[e].apply(this, arguments)
						}

						function o(t) {
							return n.prototype[e].apply(this, t)
						}
						x.isFunction(r) ? s[e] = function() {
							var t, e = this._super,
								n = this._superApply;
							return this._super = i, this._superApply = o, t = r.apply(this, arguments), this
								._super = e, this._superApply = n, t
						} : s[e] = r
					}), i.prototype = x.widget.extend(o, {
						widgetEventPrefix: r && o.widgetEventPrefix || t
					}, s, {
						constructor: i,
						namespace: a,
						widgetName: t,
						widgetFullName: u
					}), r ? (x.each(r._childConstructors, function(t, e) {
						var n = e.prototype;
						x.widget(n.namespace + "." + n.widgetName, i, e._proto)
					}), delete r._childConstructors) : n._childConstructors.push(i), x.widget.bridge(t, i), i
			}, x.widget.extend = function(t) {
				for (var e, n, r = h.call(arguments, 1), i = 0, o = r.length; i < o; i++)
					for (e in r[i]) n = r[i][e], r[i].hasOwnProperty(e) && void 0 !== n && (x.isPlainObject(n) ? t[
							e] = x.isPlainObject(t[e]) ? x.widget.extend({}, t[e], n) : x.widget.extend({}, n) :
						t[e] = n);
				return t
			}, x.widget.bridge = function(o, e) {
				var s = e.prototype.widgetFullName || o;
				x.fn[o] = function(n) {
					var t = "string" == typeof n,
						r = h.call(arguments, 1),
						i = this;
					return t ? this.length || "instance" !== n ? this.each(function() {
						var t, e = x.data(this, s);
						return "instance" === n ? (i = e, !1) : e ? x.isFunction(e[n]) && "_" !== n
							.charAt(0) ? (t = e[n].apply(e, r)) !== e && void 0 !== t ? (i = t && t
								.jquery ? i.pushStack(t.get()) : t, !1) : void 0 : x.error(
								"no such method '" + n + "' for " + o + " widget instance") : x.error(
								"cannot call methods on " + o +
								" prior to initialization; attempted to call method '" + n + "'")
					}) : i = void 0 : (r.length && (n = x.widget.extend.apply(null, [n].concat(r))), this
						.each(function() {
							var t = x.data(this, s);
							t ? (t.option(n || {}), t._init && t._init()) : x.data(this, s, new e(n,
								this))
						})), i
				}
			}, x.Widget = function() {}, x.Widget._childConstructors = [], x.Widget.prototype = {
				widgetName: "widget",
				widgetEventPrefix: "",
				defaultElement: "<div>",
				options: {
					classes: {},
					disabled: !1,
					create: null
				},
				_createWidget: function(t, e) {
					e = x(e || this.defaultElement || this)[0], this.element = x(e), this.uuid = l++, this
						.eventNamespace = "." + this.widgetName + this.uuid, this.bindings = x(), this
						.hoverable = x(), this.focusable = x(), this.classesElementLookup = {}, e !== this && (x
							.data(e, this.widgetFullName, this), this._on(!0, this.element, {
								remove: function(t) {
									t.target === e && this.destroy()
								}
							}), this.document = x(e.style ? e.ownerDocument : e.document || e), this.window = x(
								this.document[0].defaultView || this.document[0].parentWindow)), this.options =
						x.widget.extend({}, this.options, this._getCreateOptions(), t), this._create(), this
						.options.disabled && this._setOptionDisabled(this.options.disabled), this._trigger(
							"create", null, this._getCreateEventData()), this._init()
				},
				_getCreateOptions: function() {
					return {}
				},
				_getCreateEventData: x.noop,
				_create: x.noop,
				_init: x.noop,
				destroy: function() {
					var n = this;
					this._destroy(), x.each(this.classesElementLookup, function(t, e) {
							n._removeClass(e, t)
						}), this.element.off(this.eventNamespace).removeData(this.widgetFullName), this.widget()
						.off(this.eventNamespace).removeAttr("aria-disabled"), this.bindings.off(this
							.eventNamespace)
				},
				_destroy: x.noop,
				widget: function() {
					return this.element
				},
				option: function(t, e) {
					var n, r, i, o = t;
					if (0 === arguments.length) return x.widget.extend({}, this.options);
					if ("string" == typeof t)
						if (o = {}, t = (n = t.split(".")).shift(), n.length) {
							for (r = o[t] = x.widget.extend({}, this.options[t]), i = 0; i < n.length - 1; i++)
								r[n[i]] = r[n[i]] || {}, r = r[n[i]];
							if (t = n.pop(), 1 === arguments.length) return void 0 === r[t] ? null : r[t];
							r[t] = e
						} else {
							if (1 === arguments.length) return void 0 === this.options[t] ? null : this.options[
								t];
							o[t] = e
						} return this._setOptions(o), this
				},
				_setOptions: function(t) {
					for (var e in t) this._setOption(e, t[e]);
					return this
				},
				_setOption: function(t, e) {
					return "classes" === t && this._setOptionClasses(e), this.options[t] = e, "disabled" ===
						t && this._setOptionDisabled(e), this
				},
				_setOptionClasses: function(t) {
					var e, n, r;
					for (e in t) r = this.classesElementLookup[e], t[e] !== this.options.classes[e] && r && r
						.length && (n = x(r.get()), this._removeClass(r, e), n.addClass(this._classes({
							element: n,
							keys: e,
							classes: t,
							add: !0
						})))
				},
				_setOptionDisabled: function(t) {
					this._toggleClass(this.widget(), this.widgetFullName + "-disabled", null, !!t), t && (this
						._removeClass(this.hoverable, null, "ui-state-hover"), this._removeClass(this
							.focusable, null, "ui-state-focus"))
				},
				enable: function() {
					return this._setOptions({
						disabled: !1
					})
				},
				disable: function() {
					return this._setOptions({
						disabled: !0
					})
				},
				_classes: function(i) {
					var o = [],
						s = this;

					function t(t, e) {
						for (var n, r = 0; r < t.length; r++) n = s.classesElementLookup[t[r]] || x(), n = i
							.add ? x(x.unique(n.get().concat(i.element.get()))) : x(n.not(i.element).get()), s
							.classesElementLookup[t[r]] = n, o.push(t[r]), e && i.classes[t[r]] && o.push(i
								.classes[t[r]])
					}
					return i = x.extend({
						element: this.element,
						classes: this.options.classes || {}
					}, i), this._on(i.element, {
						remove: "_untrackClassesElement"
					}), i.keys && t(i.keys.match(/\S+/g) || [], !0), i.extra && t(i.extra.match(/\S+/g) ||
					[]), o.join(" ")
				},
				_untrackClassesElement: function(n) {
					var r = this;
					x.each(r.classesElementLookup, function(t, e) {
						-1 !== x.inArray(n.target, e) && (r.classesElementLookup[t] = x(e.not(n.target)
							.get()))
					})
				},
				_removeClass: function(t, e, n) {
					return this._toggleClass(t, e, n, !1)
				},
				_addClass: function(t, e, n) {
					return this._toggleClass(t, e, n, !0)
				},
				_toggleClass: function(t, e, n, r) {
					r = "boolean" == typeof r ? r : n;
					var i = "string" == typeof t || null === t,
						t = {
							extra: i ? e : n,
							keys: i ? t : e,
							element: i ? this.element : t,
							add: r
						};
					return t.element.toggleClass(this._classes(t), r), this
				},
				_on: function(i, o, t) {
					var s, a = this;
					"boolean" != typeof i && (t = o, o = i, i = !1), t ? (o = s = x(o), this.bindings = this
						.bindings.add(o)) : (t = o, o = this.element, s = this.widget()), x.each(t,
						function(t, e) {
							function n() {
								if (i || !0 !== a.options.disabled && !x(this).hasClass(
									"ui-state-disabled")) return ("string" == typeof e ? a[e] : e).apply(a,
									arguments)
							}
							"string" != typeof e && (n.guid = e.guid = e.guid || n.guid || x.guid++);
							var r = t.match(/^([\w:-]*)\s*(.*)$/),
								t = r[1] + a.eventNamespace,
								r = r[2];
							r ? s.on(t, r, n) : o.on(t, n)
						})
				},
				_off: function(t, e) {
					e = (e || "").split(" ").join(this.eventNamespace + " ") + this.eventNamespace, t.off(e)
						.off(e), this.bindings = x(this.bindings.not(t).get()), this.focusable = x(this
							.focusable.not(t).get()), this.hoverable = x(this.hoverable.not(t).get())
				},
				_delay: function(t, e) {
					var n = this;
					return setTimeout(function() {
						return ("string" == typeof t ? n[t] : t).apply(n, arguments)
					}, e || 0)
				},
				_hoverable: function(t) {
					this.hoverable = this.hoverable.add(t), this._on(t, {
						mouseenter: function(t) {
							this._addClass(x(t.currentTarget), null, "ui-state-hover")
						},
						mouseleave: function(t) {
							this._removeClass(x(t.currentTarget), null, "ui-state-hover")
						}
					})
				},
				_focusable: function(t) {
					this.focusable = this.focusable.add(t), this._on(t, {
						focusin: function(t) {
							this._addClass(x(t.currentTarget), null, "ui-state-focus")
						},
						focusout: function(t) {
							this._removeClass(x(t.currentTarget), null, "ui-state-focus")
						}
					})
				},
				_trigger: function(t, e, n) {
					var r, i, o = this.options[t];
					if (n = n || {}, (e = x.Event(e)).type = (t === this.widgetEventPrefix ? t : this
							.widgetEventPrefix + t).toLowerCase(), e.target = this.element[0], i = e
						.originalEvent)
						for (r in i) r in e || (e[r] = i[r]);
					return this.element.trigger(e, n), !(x.isFunction(o) && !1 === o.apply(this.element[0], [e]
						.concat(n)) || e.isDefaultPrevented())
				}
			}, x.each({
				show: "fadeIn",
				hide: "fadeOut"
			}, function(o, s) {
				x.Widget.prototype["_" + o] = function(e, t, n) {
					var r;
					"string" == typeof t && (t = {
						effect: t
					});
					var i = t ? !0 !== t && "number" != typeof t && t.effect || s : o;
					"number" == typeof(t = t || {}) && (t = {
						duration: t
					}), r = !x.isEmptyObject(t), t.complete = n, t.delay && e.delay(t.delay), r && x
						.effects && x.effects.effect[i] ? e[o](t) : i !== o && e[i] ? e[i](t.duration, t
							.easing, n) : e.queue(function(t) {
							x(this)[o](), n && n.call(e[0]), t()
						})
				}
			}), x.widget, C = Math.max, k = Math.abs, o = /left|center|right/, s = /top|center|bottom/, a =
			/[\+\-]\d+(\.[\d]+)?%?/, u = /^\w+/, c = /%$/, n = x.fn.position, x.position = {
				scrollbarWidth: function() {
					if (void 0 !== r) return r;
					var t, e = x(
							"<div style='display:block;position:absolute;width:50px;height:50px;overflow:hidden;'><div style='height:100px;width:auto;'></div></div>"
							),
						n = e.children()[0];
					return x("body").append(e), t = n.offsetWidth, e.css("overflow", "scroll"), t === (n = n
						.offsetWidth) && (n = e[0].clientWidth), e.remove(), r = t - n
				},
				getScrollInfo: function(t) {
					var e = t.isWindow || t.isDocument ? "" : t.element.css("overflow-x"),
						n = t.isWindow || t.isDocument ? "" : t.element.css("overflow-y"),
						e = "scroll" === e || "auto" === e && t.width < t.element[0].scrollWidth;
					return {
						width: "scroll" === n || "auto" === n && t.height < t.element[0].scrollHeight ? x
							.position.scrollbarWidth() : 0,
						height: e ? x.position.scrollbarWidth() : 0
					}
				},
				getWithinInfo: function(t) {
					var e = x(t || window),
						n = x.isWindow(e[0]),
						r = !!e[0] && 9 === e[0].nodeType;
					return {
						element: e,
						isWindow: n,
						isDocument: r,
						offset: n || r ? {
							left: 0,
							top: 0
						} : x(t).offset(),
						scrollLeft: e.scrollLeft(),
						scrollTop: e.scrollTop(),
						width: e.outerWidth(),
						height: e.outerHeight()
					}
				}
			}, x.fn.position = function(h) {
				if (!h || !h.of) return n.apply(this, arguments);
				h = x.extend({}, h);
				var f, p, d, g, m, t, v = x(h.of),
					y = x.position.getWithinInfo(h.within),
					b = x.position.getScrollInfo(y),
					w = (h.collision || "flip").split(" "),
					_ = {},
					e = 9 === (t = (e = v)[0]).nodeType ? {
						width: e.width(),
						height: e.height(),
						offset: {
							top: 0,
							left: 0
						}
					} : x.isWindow(t) ? {
						width: e.width(),
						height: e.height(),
						offset: {
							top: e.scrollTop(),
							left: e.scrollLeft()
						}
					} : t.preventDefault ? {
						width: 0,
						height: 0,
						offset: {
							top: t.pageY,
							left: t.pageX
						}
					} : {
						width: e.outerWidth(),
						height: e.outerHeight(),
						offset: e.offset()
					};
				return v[0].preventDefault && (h.at = "left top"), p = e.width, d = e.height, g = e.offset, m = x
					.extend({}, g), x.each(["my", "at"], function() {
						var t, e, n = (h[this] || "").split(" ");
						1 === n.length && (n = o.test(n[0]) ? n.concat(["center"]) : s.test(n[0]) ? ["center"]
								.concat(n) : ["center", "center"]), n[0] = o.test(n[0]) ? n[0] : "center", n[
							1] = s.test(n[1]) ? n[1] : "center", t = a.exec(n[0]), e = a.exec(n[1]), _[this] = [
								t ? t[0] : 0, e ? e[0] : 0
							], h[this] = [u.exec(n[0])[0], u.exec(n[1])[0]]
					}), 1 === w.length && (w[1] = w[0]), "right" === h.at[0] ? m.left += p : "center" === h.at[0] &&
					(m.left += p / 2), "bottom" === h.at[1] ? m.top += d : "center" === h.at[1] && (m.top += d / 2),
					f = S(_.at, p, d), m.left += f[0], m.top += f[1], this.each(function() {
						var n, t, s = x(this),
							a = s.outerWidth(),
							u = s.outerHeight(),
							e = O(this, "marginLeft"),
							r = O(this, "marginTop"),
							i = a + e + O(this, "marginRight") + b.width,
							o = u + r + O(this, "marginBottom") + b.height,
							c = x.extend({}, m),
							l = S(_.my, s.outerWidth(), s.outerHeight());
						"right" === h.my[0] ? c.left -= a : "center" === h.my[0] && (c.left -= a / 2),
							"bottom" === h.my[1] ? c.top -= u : "center" === h.my[1] && (c.top -= u / 2), c
							.left += l[0], c.top += l[1], n = {
								marginLeft: e,
								marginTop: r
							}, x.each(["left", "top"], function(t, e) {
								x.ui.position[w[t]] && x.ui.position[w[t]][e](c, {
									targetWidth: p,
									targetHeight: d,
									elemWidth: a,
									elemHeight: u,
									collisionPosition: n,
									collisionWidth: i,
									collisionHeight: o,
									offset: [f[0] + l[0], f[1] + l[1]],
									my: h.my,
									at: h.at,
									within: y,
									elem: s
								})
							}), h.using && (t = function(t) {
								var e = g.left - c.left,
									n = e + p - a,
									r = g.top - c.top,
									i = r + d - u,
									o = {
										target: {
											element: v,
											left: g.left,
											top: g.top,
											width: p,
											height: d
										},
										element: {
											element: s,
											left: c.left,
											top: c.top,
											width: a,
											height: u
										},
										horizontal: n < 0 ? "left" : 0 < e ? "right" : "center",
										vertical: i < 0 ? "top" : 0 < r ? "bottom" : "middle"
									};
								p < a && k(e + n) < p && (o.horizontal = "center"), d < u && k(r + i) < d &&
									(o.vertical = "middle"), C(k(e), k(n)) > C(k(r), k(i)) ? o.important =
									"horizontal" : o.important = "vertical", h.using.call(this, t, o)
							}), s.offset(x.extend(c, {
								using: t
							}))
					})
			}, x.ui.position = {
				fit: {
					left: function(t, e) {
						var n = e.within,
							r = n.isWindow ? n.scrollLeft : n.offset.left,
							i = n.width,
							o = t.left - e.collisionPosition.marginLeft,
							s = r - o,
							a = o + e.collisionWidth - i - r;
						e.collisionWidth > i ? 0 < s && a <= 0 ? (n = t.left + s + e.collisionWidth - i - r, t
								.left += s - n) : t.left = !(0 < a && s <= 0) && a < s ? r + i - e
							.collisionWidth : r : 0 < s ? t.left += s : 0 < a ? t.left -= a : t.left = C(t
								.left - o, t.left)
					},
					top: function(t, e) {
						var n = e.within,
							r = n.isWindow ? n.scrollTop : n.offset.top,
							i = e.within.height,
							o = t.top - e.collisionPosition.marginTop,
							s = r - o,
							a = o + e.collisionHeight - i - r;
						e.collisionHeight > i ? 0 < s && a <= 0 ? (n = t.top + s + e.collisionHeight - i - r, t
								.top += s - n) : t.top = !(0 < a && s <= 0) && a < s ? r + i - e
							.collisionHeight : r : 0 < s ? t.top += s : 0 < a ? t.top -= a : t.top = C(t.top -
								o, t.top)
					}
				},
				flip: {
					left: function(t, e) {
						var n = e.within,
							r = n.offset.left + n.scrollLeft,
							i = n.width,
							o = n.isWindow ? n.scrollLeft : n.offset.left,
							s = t.left - e.collisionPosition.marginLeft,
							a = s - o,
							u = s + e.collisionWidth - i - o,
							c = "left" === e.my[0] ? -e.elemWidth : "right" === e.my[0] ? e.elemWidth : 0,
							n = "left" === e.at[0] ? e.targetWidth : "right" === e.at[0] ? -e.targetWidth : 0,
							s = -2 * e.offset[0];
						a < 0 ? ((r = t.left + c + n + s + e.collisionWidth - i - r) < 0 || r < k(a)) && (t
							.left += c + n + s) : 0 < u && (0 < (o = t.left - e.collisionPosition
							.marginLeft + c + n + s - o) || k(o) < u) && (t.left += c + n + s)
					},
					top: function(t, e) {
						var n = e.within,
							r = n.offset.top + n.scrollTop,
							i = n.height,
							o = n.isWindow ? n.scrollTop : n.offset.top,
							s = t.top - e.collisionPosition.marginTop,
							a = s - o,
							u = s + e.collisionHeight - i - o,
							c = "top" === e.my[1] ? -e.elemHeight : "bottom" === e.my[1] ? e.elemHeight : 0,
							n = "top" === e.at[1] ? e.targetHeight : "bottom" === e.at[1] ? -e.targetHeight : 0,
							s = -2 * e.offset[1];
						a < 0 ? ((r = t.top + c + n + s + e.collisionHeight - i - r) < 0 || r < k(a)) && (t
							.top += c + n + s) : 0 < u && (0 < (o = t.top - e.collisionPosition.marginTop +
							c + n + s - o) || k(o) < u) && (t.top += c + n + s)
					}
				},
				flipfit: {
					left: function() {
						x.ui.position.flip.left.apply(this, arguments), x.ui.position.fit.left.apply(this,
							arguments)
					},
					top: function() {
						x.ui.position.flip.top.apply(this, arguments), x.ui.position.fit.top.apply(this,
							arguments)
					}
				}
			}, x.ui.position, x.fn.form = function() {
				return "string" == typeof this[0].form ? this.closest("form") : x(this[0].form)
			}, x.ui.formResetMixin = {
				_formResetHandler: function() {
					var e = x(this);
					setTimeout(function() {
						var t = e.data("ui-form-reset-instances");
						x.each(t, function() {
							this.refresh()
						})
					})
				},
				_bindFormResetHandler: function() {
					var t;
					this.form = this.element.form(), this.form.length && ((t = this.form.data(
						"ui-form-reset-instances") || []).length || this.form.on("reset.ui-form-reset",
						this._formResetHandler), t.push(this), this.form.data("ui-form-reset-instances",
						t))
				},
				_unbindFormResetHandler: function() {
					var t;
					this.form.length && ((t = this.form.data("ui-form-reset-instances")).splice(x.inArray(this,
							t), 1), t.length ? this.form.data("ui-form-reset-instances", t) : this.form
						.removeData("ui-form-reset-instances").off("reset.ui-form-reset"))
				}
			}, x.ui.keyCode = {
				BACKSPACE: 8,
				COMMA: 188,
				DELETE: 46,
				DOWN: 40,
				END: 35,
				ENTER: 13,
				ESCAPE: 27,
				HOME: 36,
				LEFT: 37,
				PAGE_DOWN: 34,
				PAGE_UP: 33,
				PERIOD: 190,
				RIGHT: 39,
				SPACE: 32,
				TAB: 9,
				UP: 38
			}, x.ui.escapeSelector = (e = /([!"#$%&'()*+,./:;<=>?@[\]^`{|}~])/g, function(t) {
				return t.replace(e, "\\$1")
			}), x.fn.labels = function() {
				var t, e, n;
				return this[0].labels && this[0].labels.length ? this.pushStack(this[0].labels) : (e = this.eq(0)
					.parents("label"), (t = this.attr("id")) && (n = (n = this.eq(0).parents().last()).add((n
							.length ? n : this).siblings()), t = "label[for='" + x.ui.escapeSelector(t) + "']",
						e = e.add(n.find(t).addBack(t))), this.pushStack(e))
			}, x.fn.extend({
				uniqueId: (t = 0, function() {
					return this.each(function() {
						this.id || (this.id = "ui-id-" + ++t)
					})
				}),
				removeUniqueId: function() {
					return this.each(function() {
						/^ui-id-\d+$/.test(this.id) && x(this).removeAttr("id")
					})
				}
			});
		var e, t, f, p = /ui-corner-([a-z]){2,6}/g;
		x.widget("ui.controlgroup", {
			version: "1.12.1",
			defaultElement: "<div>",
			options: {
				direction: "horizontal",
				disabled: null,
				onlyVisible: !0,
				items: {
					button: "input[type=button], input[type=submit], input[type=reset], button, a",
					controlgroupLabel: ".ui-controlgroup-label",
					checkboxradio: "input[type='checkbox'], input[type='radio']",
					selectmenu: "select",
					spinner: ".ui-spinner-input"
				}
			},
			_create: function() {
				this._enhance()
			},
			_enhance: function() {
				this.element.attr("role", "toolbar"), this.refresh()
			},
			_destroy: function() {
				this._callChildMethod("destroy"), this.childWidgets.removeData("ui-controlgroup-data"),
					this.element.removeAttr("role"), this.options.items.controlgroupLabel && this
					.element.find(this.options.items.controlgroupLabel).find(
						".ui-controlgroup-label-contents").contents().unwrap()
			},
			_initWidgets: function() {
				var o = this,
					s = [];
				x.each(this.options.items, function(r, t) {
					var e, i;
					if (t) return "controlgroupLabel" === r ? ((e = o.element.find(t)).each(
						function() {
							var t = x(this);
							t.children(".ui-controlgroup-label-contents").length ||
								t.contents().wrapAll(
									"<span class='ui-controlgroup-label-contents'></span>"
									)
						}), o._addClass(e, null,
						"ui-widget ui-widget-content ui-state-default"), void(s = s
						.concat(e.get()))) : void(x.fn[r] && (i = o["_" + r +
						"Options"] ? o["_" + r + "Options"]("middle") : {
							classes: {}
						}, o.element.find(t).each(function() {
							var t = x(this),
								e = t[r]("instance"),
								n = x.widget.extend({}, i);
							"button" === r && t.parent(".ui-spinner").length ||
								((e = e || t[r]()[r]("instance")) && (n
									.classes = o._resolveClassesValues(n
										.classes, e)), t[r](n), n = t[r](
									"widget"), x.data(n[0],
									"ui-controlgroup-data", e || t[r](
										"instance")), s.push(n[0]))
						})))
				}), this.childWidgets = x(x.unique(s)), this._addClass(this.childWidgets,
					"ui-controlgroup-item")
			},
			_callChildMethod: function(e) {
				this.childWidgets.each(function() {
					var t = x(this).data("ui-controlgroup-data");
					t && t[e] && t[e]()
				})
			},
			_updateCornerClass: function(t, e) {
				e = this._buildSimpleOptions(e, "label").classes.label;
				this._removeClass(t, null,
						"ui-corner-top ui-corner-bottom ui-corner-left ui-corner-right ui-corner-all"),
					this._addClass(t, null, e)
			},
			_buildSimpleOptions: function(t, e) {
				var n = "vertical" === this.options.direction,
					r = {
						classes: {}
					};
				return r.classes[e] = {
					middle: "",
					first: "ui-corner-" + (n ? "top" : "left"),
					last: "ui-corner-" + (n ? "bottom" : "right"),
					only: "ui-corner-all"
				} [t], r
			},
			_spinnerOptions: function(t) {
				t = this._buildSimpleOptions(t, "ui-spinner");
				return t.classes["ui-spinner-up"] = "", t.classes["ui-spinner-down"] = "", t
			},
			_buttonOptions: function(t) {
				return this._buildSimpleOptions(t, "ui-button")
			},
			_checkboxradioOptions: function(t) {
				return this._buildSimpleOptions(t, "ui-checkboxradio-label")
			},
			_selectmenuOptions: function(t) {
				var e = "vertical" === this.options.direction;
				return {
					width: !!e && "auto",
					classes: {
						middle: {
							"ui-selectmenu-button-open": "",
							"ui-selectmenu-button-closed": ""
						},
						first: {
							"ui-selectmenu-button-open": "ui-corner-" + (e ? "top" : "tl"),
							"ui-selectmenu-button-closed": "ui-corner-" + (e ? "top" : "left")
						},
						last: {
							"ui-selectmenu-button-open": e ? "" : "ui-corner-tr",
							"ui-selectmenu-button-closed": "ui-corner-" + (e ? "bottom" : "right")
						},
						only: {
							"ui-selectmenu-button-open": "ui-corner-top",
							"ui-selectmenu-button-closed": "ui-corner-all"
						}
					} [t]
				}
			},
			_resolveClassesValues: function(n, r) {
				var i = {};
				return x.each(n, function(t) {
					var e = r.options.classes[t] || "",
						e = x.trim(e.replace(p, ""));
					i[t] = (e + " " + n[t]).replace(/\s+/g, " ")
				}), i
			},
			_setOption: function(t, e) {
				"direction" === t && this._removeClass("ui-controlgroup-" + this.options.direction),
					this._super(t, e), "disabled" !== t ? this.refresh() : this._callChildMethod(e ?
						"disable" : "enable")
			},
			refresh: function() {
				var i, o = this;
				this._addClass("ui-controlgroup ui-controlgroup-" + this.options.direction),
					"horizontal" === this.options.direction && this._addClass(null,
						"ui-helper-clearfix"), this._initWidgets(), i = this.childWidgets, this.options
					.onlyVisible && (i = i.filter(":visible")), i.length && (x.each(["first", "last"],
						function(t, e) {
							var n, r = i[e]().data("ui-controlgroup-data");
							r && o["_" + r.widgetName + "Options"] ? ((n = o["_" + r.widgetName +
									"Options"](1 === i.length ? "only" : e)).classes = o
								._resolveClassesValues(n.classes, r), r.element[r.widgetName](n)
								) : o._updateCornerClass(i[e](), e)
						}), this._callChildMethod("refresh"))
			}
		}), x.widget("ui.checkboxradio", [x.ui.formResetMixin, {
			version: "1.12.1",
			options: {
				disabled: null,
				label: null,
				icon: !0,
				classes: {
					"ui-checkboxradio-label": "ui-corner-all",
					"ui-checkboxradio-icon": "ui-corner-all"
				}
			},
			_getCreateOptions: function() {
				var t, e = this,
					n = this._super() || {};
				return this._readType(), t = this.element.labels(), this.label = x(t[t.length - 1]),
					this.label.length || x.error("No label found for checkboxradio widget"), this
					.originalLabel = "", this.label.contents().not(this.element[0]).each(
				function() {
						e.originalLabel += 3 === this.nodeType ? x(this).text() : this.outerHTML
					}), this.originalLabel && (n.label = this.originalLabel), null != (t = this
						.element[0].disabled) && (n.disabled = t), n
			},
			_create: function() {
				var t = this.element[0].checked;
				this._bindFormResetHandler(), null == this.options.disabled && (this.options
						.disabled = this.element[0].disabled), this._setOption("disabled", this
						.options.disabled), this._addClass("ui-checkboxradio",
						"ui-helper-hidden-accessible"), this._addClass(this.label,
						"ui-checkboxradio-label", "ui-button ui-widget"), "radio" === this.type &&
					this._addClass(this.label, "ui-checkboxradio-radio-label"), this.options
					.label && this.options.label !== this.originalLabel ? this._updateLabel() : this
					.originalLabel && (this.options.label = this.originalLabel), this._enhance(),
					t && (this._addClass(this.label, "ui-checkboxradio-checked", "ui-state-active"),
						this.icon && this._addClass(this.icon, null, "ui-state-hover")), this._on({
						change: "_toggleClasses",
						focus: function() {
							this._addClass(this.label, null,
								"ui-state-focus ui-visual-focus")
						},
						blur: function() {
							this._removeClass(this.label, null,
								"ui-state-focus ui-visual-focus")
						}
					})
			},
			_readType: function() {
				var t = this.element[0].nodeName.toLowerCase();
				this.type = this.element[0].type, "input" === t && /radio|checkbox/.test(this
					.type) || x.error("Can't create checkboxradio on element.nodeName=" + t +
						" and element.type=" + this.type)
			},
			_enhance: function() {
				this._updateIcon(this.element[0].checked)
			},
			widget: function() {
				return this.label
			},
			_getRadioGroup: function() {
				var t = this.element[0].name,
					e = "input[name='" + x.ui.escapeSelector(t) + "']";
				return t ? (this.form.length ? x(this.form[0].elements).filter(e) : x(e).filter(
					function() {
						return 0 === x(this).form().length
					})).not(this.element) : x([])
			},
			_toggleClasses: function() {
				var t = this.element[0].checked;
				this._toggleClass(this.label, "ui-checkboxradio-checked", "ui-state-active", t),
					this.options.icon && "checkbox" === this.type && this._toggleClass(this.icon,
						null, "ui-icon-check ui-state-checked", t)._toggleClass(this.icon, null,
						"ui-icon-blank", !t), "radio" === this.type && this._getRadioGroup().each(
						function() {
							var t = x(this).checkboxradio("instance");
							t && t._removeClass(t.label, "ui-checkboxradio-checked",
								"ui-state-active")
						})
			},
			_destroy: function() {
				this._unbindFormResetHandler(), this.icon && (this.icon.remove(), this.iconSpace
					.remove())
			},
			_setOption: function(t, e) {
				if ("label" !== t || e) {
					if (this._super(t, e), "disabled" === t) return this._toggleClass(this.label,
						null, "ui-state-disabled", e), void(this.element[0].disabled = e);
					this.refresh()
				}
			},
			_updateIcon: function(t) {
				var e = "ui-icon ui-icon-background ";
				this.options.icon ? (this.icon || (this.icon = x("<span>"), this.iconSpace = x(
							"<span> </span>"), this._addClass(this.iconSpace,
							"ui-checkboxradio-icon-space")), "checkbox" === this.type ? (e += t ?
							"ui-icon-check ui-state-checked" : "ui-icon-blank", this._removeClass(
								this.icon, null, t ? "ui-icon-blank" : "ui-icon-check")) : e +=
						"ui-icon-blank", this._addClass(this.icon, "ui-checkboxradio-icon", e), t ||
						this._removeClass(this.icon, null, "ui-icon-check ui-state-checked"), this
						.icon.prependTo(this.label).after(this.iconSpace)) : void 0 !== this.icon &&
					(this.icon.remove(), this.iconSpace.remove(), delete this.icon)
			},
			_updateLabel: function() {
				var t = this.label.contents().not(this.element[0]);
				this.icon && (t = t.not(this.icon[0])), this.iconSpace && (t = t.not(this.iconSpace[
					0])), t.remove(), this.label.append(this.options.label)
			},
			refresh: function() {
				var t = this.element[0].checked,
					e = this.element[0].disabled;
				this._updateIcon(t), this._toggleClass(this.label, "ui-checkboxradio-checked",
						"ui-state-active", t), null !== this.options.label && this._updateLabel(),
					e !== this.options.disabled && this._setOptions({
						disabled: e
					})
			}
		}]), x.ui.checkboxradio, x.widget("ui.button", {
			version: "1.12.1",
			defaultElement: "<button>",
			options: {
				classes: {
					"ui-button": "ui-corner-all"
				},
				disabled: null,
				icon: null,
				iconPosition: "beginning",
				label: null,
				showLabel: !0
			},
			_getCreateOptions: function() {
				var t, e = this._super() || {};
				return this.isInput = this.element.is("input"), null != (t = this.element[0]
					.disabled) && (e.disabled = t), this.originalLabel = this.isInput ? this.element
					.val() : this.element.html(), this.originalLabel && (e.label = this.originalLabel),
					e
			},
			_create: function() {
				!this.option.showLabel & !this.options.icon && (this.options.showLabel = !0), null ==
					this.options.disabled && (this.options.disabled = this.element[0].disabled || !1),
					this.hasTitle = !!this.element.attr("title"), this.options.label && this.options
					.label !== this.originalLabel && (this.isInput ? this.element.val(this.options
						.label) : this.element.html(this.options.label)), this._addClass("ui-button",
						"ui-widget"), this._setOption("disabled", this.options.disabled), this
					._enhance(), this.element.is("a") && this._on({
						keyup: function(t) {
							t.keyCode === x.ui.keyCode.SPACE && (t.preventDefault(), this
								.element[0].click ? this.element[0].click() : this.element
								.trigger("click"))
						}
					})
			},
			_enhance: function() {
				this.element.is("button") || this.element.attr("role", "button"), this.options.icon && (
					this._updateIcon("icon", this.options.icon), this._updateTooltip())
			},
			_updateTooltip: function() {
				this.title = this.element.attr("title"), this.options.showLabel || this.title || this
					.element.attr("title", this.options.label)
			},
			_updateIcon: function(t, e) {
				var n = "iconPosition" !== t,
					r = n ? this.options.iconPosition : e,
					t = "top" === r || "bottom" === r;
				this.icon ? n && this._removeClass(this.icon, null, this.options.icon) : (this.icon = x(
							"<span>"), this._addClass(this.icon, "ui-button-icon", "ui-icon"), this
						.options.showLabel || this._addClass("ui-button-icon-only")), n && this
					._addClass(this.icon, null, e), this._attachIcon(r), t ? (this._addClass(this.icon,
						null, "ui-widget-icon-block"), this.iconSpace && this.iconSpace.remove()) : (
						this.iconSpace || (this.iconSpace = x("<span> </span>"), this._addClass(this
							.iconSpace, "ui-button-icon-space")), this._removeClass(this.icon, null,
							"ui-wiget-icon-block"), this._attachIconSpace(r))
			},
			_destroy: function() {
				this.element.removeAttr("role"), this.icon && this.icon.remove(), this.iconSpace && this
					.iconSpace.remove(), this.hasTitle || this.element.removeAttr("title")
			},
			_attachIconSpace: function(t) {
				this.icon[/^(?:end|bottom)/.test(t) ? "before" : "after"](this.iconSpace)
			},
			_attachIcon: function(t) {
				this.element[/^(?:end|bottom)/.test(t) ? "append" : "prepend"](this.icon)
			},
			_setOptions: function(t) {
				var e = (void 0 === t.showLabel ? this.options : t).showLabel,
					n = (void 0 === t.icon ? this.options : t).icon;
				e || n || (t.showLabel = !0), this._super(t)
			},
			_setOption: function(t, e) {
				"icon" === t && (e ? this._updateIcon(t, e) : this.icon && (this.icon.remove(), this
						.iconSpace && this.iconSpace.remove())), "iconPosition" === t && this
					._updateIcon(t, e), "showLabel" === t && (this._toggleClass("ui-button-icon-only",
						null, !e), this._updateTooltip()), "label" === t && (this.isInput ? this.element
						.val(e) : (this.element.html(e), this.icon && (this._attachIcon(this.options
							.iconPosition), this._attachIconSpace(this.options.iconPosition)))), this
					._super(t, e), "disabled" === t && (this._toggleClass(null, "ui-state-disabled", e),
						(this.element[0].disabled = e) && this.element.blur())
			},
			refresh: function() {
				var t = this.element.is("input, button") ? this.element[0].disabled : this.element
					.hasClass("ui-button-disabled");
				t !== this.options.disabled && this._setOptions({
					disabled: t
				}), this._updateTooltip()
			}
		}), !1 !== x.uiBackCompat && (x.widget("ui.button", x.ui.button, {
			options: {
				text: !0,
				icons: {
					primary: null,
					secondary: null
				}
			},
			_create: function() {
				this.options.showLabel && !this.options.text && (this.options.showLabel = this
						.options.text), !this.options.showLabel && this.options.text && (this
						.options.text = this.options.showLabel), this.options.icon || !this.options
					.icons.primary && !this.options.icons.secondary ? this.options.icon && (this
						.options.icons.primary = this.options.icon) : this.options.icons.primary ?
					this.options.icon = this.options.icons.primary : (this.options.icon = this
						.options.icons.secondary, this.options.iconPosition = "end"), this._super()
			},
			_setOption: function(t, e) {
				"text" !== t ? ("showLabel" === t && (this.options.text = e), "icon" === t && (this
					.options.icons.primary = e), "icons" === t && (e.primary ? (this._super(
						"icon", e.primary), this._super("iconPosition", "beginning")) : e
					.secondary && (this._super("icon", e.secondary), this._super(
						"iconPosition", "end"))), this._superApply(arguments)) : this._super(
					"showLabel", e)
			}
		}), x.fn.button = (f = x.fn.button, function() {
			return !this.length || this.length && "INPUT" !== this[0].tagName || this.length &&
				"INPUT" === this[0].tagName && "checkbox" !== this.attr("type") && "radio" !== this
				.attr("type") ? f.apply(this, arguments) : (x.ui.checkboxradio || x.error(
					"Checkboxradio widget missing"), 0 === arguments.length ? this.checkboxradio({
					icon: !1
				}) : this.checkboxradio.apply(this, arguments))
		}), x.fn.buttonset = function() {
			return x.ui.controlgroup || x.error("Controlgroup widget missing"), "option" === arguments[0] &&
				"items" === arguments[1] && arguments[2] ? this.controlgroup.apply(this, [arguments[0],
					"items.button", arguments[2]
				]) : "option" === arguments[0] && "items" === arguments[1] ? this.controlgroup.apply(this, [
					arguments[0], "items.button"
				]) : ("object" == typeof arguments[0] && arguments[0].items && (arguments[0].items = {
					button: arguments[0].items
				}), this.controlgroup.apply(this, arguments))
		}), x.ui.button, x.ui.safeActiveElement = function(e) {
			var n;
			try {
				n = e.activeElement
			} catch (t) {
				n = e.body
			}
			return (n = n || e.body).nodeName || (n = e.body), n
		}, x.widget("ui.menu", {
			version: "1.12.1",
			defaultElement: "<ul>",
			delay: 300,
			options: {
				icons: {
					submenu: "ui-icon-caret-1-e"
				},
				items: "> *",
				menus: "ul",
				position: {
					my: "left top",
					at: "right top"
				},
				role: "menu",
				blur: null,
				focus: null,
				select: null
			},
			_create: function() {
				this.activeMenu = this.element, this.mouseHandled = !1, this.element.uniqueId().attr({
					role: this.options.role,
					tabIndex: 0
				}), this._addClass("ui-menu", "ui-widget ui-widget-content"), this._on({
					"mousedown .ui-menu-item": function(t) {
						t.preventDefault()
					},
					"click .ui-menu-item": function(t) {
						var e = x(t.target),
							n = x(x.ui.safeActiveElement(this.document[0]));
						!this.mouseHandled && e.not(".ui-state-disabled").length && (this
							.select(t), t.isPropagationStopped() || (this
								.mouseHandled = !0), e.has(".ui-menu").length ? this
							.expand(t) : !this.element.is(":focus") && n.closest(
								".ui-menu").length && (this.element.trigger("focus", [!
								0]), this.active && 1 === this.active.parents(
								".ui-menu").length && clearTimeout(this.timer)))
					},
					"mouseenter .ui-menu-item": function(t) {
						var e, n;
						this.previousFilter || (e = x(t.target).closest(".ui-menu-item"),
							n = x(t.currentTarget), e[0] === n[0] && (this._removeClass(
								n.siblings().children(".ui-state-active"), null,
								"ui-state-active"), this.focus(t, n)))
					},
					mouseleave: "collapseAll",
					"mouseleave .ui-menu": "collapseAll",
					focus: function(t, e) {
						var n = this.active || this.element.find(this.options.items).eq(0);
						e || this.focus(t, n)
					},
					blur: function(t) {
						this._delay(function() {
							x.contains(this.element[0], x.ui.safeActiveElement(this
								.document[0])) || this.collapseAll(t)
						})
					},
					keydown: "_keydown"
				}), this.refresh(), this._on(this.document, {
					click: function(t) {
						this._closeOnDocumentClick(t) && this.collapseAll(t), this
							.mouseHandled = !1
					}
				})
			},
			_destroy: function() {
				var t = this.element.find(".ui-menu-item").removeAttr("role aria-disabled").children(
					".ui-menu-item-wrapper").removeUniqueId().removeAttr(
					"tabIndex role aria-haspopup");
				this.element.removeAttr("aria-activedescendant").find(".ui-menu").addBack().removeAttr(
						"role aria-labelledby aria-expanded aria-hidden aria-disabled tabIndex")
					.removeUniqueId().show(), t.children().each(function() {
						var t = x(this);
						t.data("ui-menu-submenu-caret") && t.remove()
					})
			},
			_keydown: function(t) {
				var e, n, r, i = !0;
				switch (t.keyCode) {
					case x.ui.keyCode.PAGE_UP:
						this.previousPage(t);
						break;
					case x.ui.keyCode.PAGE_DOWN:
						this.nextPage(t);
						break;
					case x.ui.keyCode.HOME:
						this._move("first", "first", t);
						break;
					case x.ui.keyCode.END:
						this._move("last", "last", t);
						break;
					case x.ui.keyCode.UP:
						this.previous(t);
						break;
					case x.ui.keyCode.DOWN:
						this.next(t);
						break;
					case x.ui.keyCode.LEFT:
						this.collapse(t);
						break;
					case x.ui.keyCode.RIGHT:
						this.active && !this.active.is(".ui-state-disabled") && this.expand(t);
						break;
					case x.ui.keyCode.ENTER:
					case x.ui.keyCode.SPACE:
						this._activate(t);
						break;
					case x.ui.keyCode.ESCAPE:
						this.collapse(t);
						break;
					default:
						i = !1, e = this.previousFilter || "", r = !1, n = 96 <= t.keyCode && t
							.keyCode <= 105 ? (t.keyCode - 96).toString() : String.fromCharCode(t
								.keyCode), clearTimeout(this.filterTimer), n === e ? r = !0 : n = e + n,
							e = this._filterMenuItems(n), (e = r && -1 !== e.index(this.active.next()) ?
								this.active.nextAll(".ui-menu-item") : e).length || (n = String
								.fromCharCode(t.keyCode), e = this._filterMenuItems(n)), e.length ? (
								this.focus(t, e), this.previousFilter = n, this.filterTimer = this
								._delay(function() {
									delete this.previousFilter
								}, 1e3)) : delete this.previousFilter
				}
				i && t.preventDefault()
			},
			_activate: function(t) {
				this.active && !this.active.is(".ui-state-disabled") && (this.active.children(
					"[aria-haspopup='true']").length ? this.expand(t) : this.select(t))
			},
			refresh: function() {
				var t, e, r = this,
					i = this.options.icons.submenu,
					n = this.element.find(this.options.menus);
				this._toggleClass("ui-menu-icons", null, !!this.element.find(".ui-icon").length), e = n
					.filter(":not(.ui-menu)").hide().attr({
						role: this.options.role,
						"aria-hidden": "true",
						"aria-expanded": "false"
					}).each(function() {
						var t = x(this),
							e = t.prev(),
							n = x("<span>").data("ui-menu-submenu-caret", !0);
						r._addClass(n, "ui-menu-icon", "ui-icon " + i), e.attr("aria-haspopup",
							"true").prepend(n), t.attr("aria-labelledby", e.attr("id"))
					}), this._addClass(e, "ui-menu", "ui-widget ui-widget-content ui-front"), (t = n
						.add(this.element).find(this.options.items)).not(".ui-menu-item").each(
					function() {
						var t = x(this);
						r._isDivider(t) && r._addClass(t, "ui-menu-divider", "ui-widget-content")
					}), n = (e = t.not(".ui-menu-item, .ui-menu-divider")).children().not(".ui-menu")
					.uniqueId().attr({
						tabIndex: -1,
						role: this._itemRole()
					}), this._addClass(e, "ui-menu-item")._addClass(n, "ui-menu-item-wrapper"), t
					.filter(".ui-state-disabled").attr("aria-disabled", "true"), this.active && !x
					.contains(this.element[0], this.active[0]) && this.blur()
			},
			_itemRole: function() {
				return {
					menu: "menuitem",
					listbox: "option"
				} [this.options.role]
			},
			_setOption: function(t, e) {
				var n;
				"icons" === t && (n = this.element.find(".ui-menu-icon"), this._removeClass(n, null,
					this.options.icons.submenu)._addClass(n, null, e.submenu)), this._super(t, e)
			},
			_setOptionDisabled: function(t) {
				this._super(t), this.element.attr("aria-disabled", String(t)), this._toggleClass(null,
					"ui-state-disabled", !!t)
			},
			focus: function(t, e) {
				var n;
				this.blur(t, t && "focus" === t.type), this._scrollIntoView(e), this.active = e.first(),
					n = this.active.children(".ui-menu-item-wrapper"), this._addClass(n, null,
						"ui-state-active"), this.options.role && this.element.attr(
						"aria-activedescendant", n.attr("id")), n = this.active.parent().closest(
						".ui-menu-item").children(".ui-menu-item-wrapper"), this._addClass(n, null,
						"ui-state-active"), t && "keydown" === t.type ? this._close() : this.timer =
					this._delay(function() {
						this._close()
					}, this.delay), (n = e.children(".ui-menu")).length && t && /^mouse/.test(t.type) &&
					this._startOpening(n), this.activeMenu = e.parent(), this._trigger("focus", t, {
						item: e
					})
			},
			_scrollIntoView: function(t) {
				var e, n, r;
				this._hasScroll() && (n = parseFloat(x.css(this.activeMenu[0], "borderTopWidth")) || 0,
					r = parseFloat(x.css(this.activeMenu[0], "paddingTop")) || 0, e = t.offset()
					.top - this.activeMenu.offset().top - n - r, n = this.activeMenu.scrollTop(),
					r = this.activeMenu.height(), t = t.outerHeight(), e < 0 ? this.activeMenu
					.scrollTop(n + e) : r < e + t && this.activeMenu.scrollTop(n + e - r + t))
			},
			blur: function(t, e) {
				e || clearTimeout(this.timer), this.active && (this._removeClass(this.active.children(
					".ui-menu-item-wrapper"), null, "ui-state-active"), this._trigger("blur",
				t, {
					item: this.active
				}), this.active = null)
			},
			_startOpening: function(t) {
				clearTimeout(this.timer), "true" === t.attr("aria-hidden") && (this.timer = this._delay(
					function() {
						this._close(), this._open(t)
					}, this.delay))
			},
			_open: function(t) {
				var e = x.extend({
					of: this.active
				}, this.options.position);
				clearTimeout(this.timer), this.element.find(".ui-menu").not(t.parents(".ui-menu"))
				.hide().attr("aria-hidden", "true"), t.show().removeAttr("aria-hidden").attr(
					"aria-expanded", "true").position(e)
			},
			collapseAll: function(e, n) {
				clearTimeout(this.timer), this.timer = this._delay(function() {
					var t = n ? this.element : x(e && e.target).closest(this.element.find(
						".ui-menu"));
					t.length || (t = this.element), this._close(t), this.blur(e), this
						._removeClass(t.find(".ui-state-active"), null, "ui-state-active"), this
						.activeMenu = t
				}, this.delay)
			},
			_close: function(t) {
				(t = t || (this.active ? this.active.parent() : this.element)).find(".ui-menu").hide()
					.attr("aria-hidden", "true").attr("aria-expanded", "false")
			},
			_closeOnDocumentClick: function(t) {
				return !x(t.target).closest(".ui-menu").length
			},
			_isDivider: function(t) {
				return !/[^\-\u2014\u2013\s]/.test(t.text())
			},
			collapse: function(t) {
				var e = this.active && this.active.parent().closest(".ui-menu-item", this.element);
				e && e.length && (this._close(), this.focus(t, e))
			},
			expand: function(t) {
				var e = this.active && this.active.children(".ui-menu ").find(this.options.items)
				.first();
				e && e.length && (this._open(e.parent()), this._delay(function() {
					this.focus(t, e)
				}))
			},
			next: function(t) {
				this._move("next", "first", t)
			},
			previous: function(t) {
				this._move("prev", "last", t)
			},
			isFirstItem: function() {
				return this.active && !this.active.preval(".ui-menu-item").length
			},
			isLastItem: function() {
				return this.active && !this.active.nextAll(".ui-menu-item").length
			},
			_move: function(t, e, n) {
				var r;
				this.active && (r = "first" === t || "last" === t ? this.active["first" === t ?
					"prevAll" : "nextAll"](".ui-menu-item").eq(-1) : this.active[t + "All"](
					".ui-menu-item").eq(0)), r && r.length && this.active || (r = this.activeMenu
					.find(this.options.items)[e]()), this.focus(n, r)
			},
			nextPage: function(t) {
				var e, n, r;
				this.active ? this.isLastItem() || (this._hasScroll() ? (n = this.active.offset().top,
					r = this.element.height(), this.active.nextAll(".ui-menu-item").each(
						function() {
							return (e = x(this)).offset().top - n - r < 0
						}), this.focus(t, e)) : this.focus(t, this.activeMenu.find(this.options
					.items)[this.active ? "last" : "first"]())) : this.next(t)
			},
			previousPage: function(t) {
				var e, n, r;
				this.active ? this.isFirstItem() || (this._hasScroll() ? (n = this.active.offset().top,
					r = this.element.height(), this.active.preval(".ui-menu-item").each(
						function() {
							return 0 < (e = x(this)).offset().top - n + r
						}), this.focus(t, e)) : this.focus(t, this.activeMenu.find(this.options
					.items).first())) : this.next(t)
			},
			_hasScroll: function() {
				return this.element.outerHeight() < this.element.prop("scrollHeight")
			},
			select: function(t) {
				this.active = this.active || x(t.target).closest(".ui-menu-item");
				var e = {
					item: this.active
				};
				this.active.has(".ui-menu").length || this.collapseAll(t, !0), this._trigger("select",
					t, e)
			},
			_filterMenuItems: function(t) {
				var t = t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g, "\\$&"),
					e = new RegExp("^" + t, "i");
				return this.activeMenu.find(this.options.items).filter(".ui-menu-item").filter(
				function() {
					return e.test(x.trim(x(this).children(".ui-menu-item-wrapper").text()))
				})
			}
		}), x.ui.ie = !!/msie [\w.]+/.exec(navigator.userAgent.toLowerCase());
		var d = !1;

		function g(e) {
			return function() {
				var t = this.element.val();
				e.apply(this, arguments), this._refresh(), t !== this.element.val() && this._trigger("change")
			}
		}
		x(document).on("mouseup", function() {
			d = !1
		}), x.widget("ui.mouse", {
			version: "1.12.1",
			options: {
				cancel: "input, textarea, button, select, option",
				distance: 1,
				delay: 0
			},
			_mouseInit: function() {
				var e = this;
				this.element.on("mousedown." + this.widgetName, function(t) {
					return e._mouseDown(t)
				}).on("click." + this.widgetName, function(t) {
					if (!0 === x.data(t.target, e.widgetName + ".preventClickEvent")) return x
						.removeData(t.target, e.widgetName + ".preventClickEvent"), t
						.stopImmediatePropagation(), !1
				}), this.started = !1
			},
			_mouseDestroy: function() {
				this.element.off("." + this.widgetName), this._mouseMoveDelegate && this.document.off(
					"mousemove." + this.widgetName, this._mouseMoveDelegate).off("mouseup." + this
					.widgetName, this._mouseUpDelegate)
			},
			_mouseDown: function(t) {
				if (!d) {
					this._mouseMoved = !1, this._mouseStarted && this._mouseUp(t), this
						._mouseDownEvent = t;
					var e = this,
						n = 1 === t.which,
						r = !("string" != typeof this.options.cancel || !t.target.nodeName) && x(t
							.target).closest(this.options.cancel).length;
					return !(n && !r && this._mouseCapture(t)) || (this.mouseDelayMet = !this.options
						.delay, this.mouseDelayMet || (this._mouseDelayTimer = setTimeout(
					function() {
							e.mouseDelayMet = !0
						}, this.options.delay)), this._mouseDistanceMet(t) && this._mouseDelayMet(
						t) && (this._mouseStarted = !1 !== this._mouseStart(t), !this
						._mouseStarted) ? (t.preventDefault(), !0) : (!0 === x.data(t.target, this
								.widgetName + ".preventClickEvent") && x.removeData(t.target, this
								.widgetName + ".preventClickEvent"), this._mouseMoveDelegate =
							function(t) {
								return e._mouseMove(t)
							}, this._mouseUpDelegate = function(t) {
								return e._mouseUp(t)
							}, this.document.on("mousemove." + this.widgetName, this
								._mouseMoveDelegate).on("mouseup." + this.widgetName, this
								._mouseUpDelegate), t.preventDefault(), d = !0))
				}
			},
			_mouseMove: function(t) {
				if (this._mouseMoved) {
					if (x.ui.ie && (!document.documentMode || document.documentMode < 9) && !t.button)
						return this._mouseUp(t);
					if (!t.which)
						if (t.originalEvent.altKey || t.originalEvent.ctrlKey || t.originalEvent
							.metaKey || t.originalEvent.shiftKey) this.ignoreMissingWhich = !0;
						else if (!this.ignoreMissingWhich) return this._mouseUp(t)
				}
				return (t.which || t.button) && (this._mouseMoved = !0), this._mouseStarted ? (this
					._mouseDrag(t), t.preventDefault()) : (this._mouseDistanceMet(t) && this
					._mouseDelayMet(t) && (this._mouseStarted = !1 !== this._mouseStart(this
							._mouseDownEvent, t), this._mouseStarted ? this._mouseDrag(t) : this
						._mouseUp(t)), !this._mouseStarted)
			},
			_mouseUp: function(t) {
				this.document.off("mousemove." + this.widgetName, this._mouseMoveDelegate).off(
						"mouseup." + this.widgetName, this._mouseUpDelegate), this._mouseStarted && (
						this._mouseStarted = !1, t.target === this._mouseDownEvent.target && x.data(t
							.target, this.widgetName + ".preventClickEvent", !0), this._mouseStop(t)),
					this._mouseDelayTimer && (clearTimeout(this._mouseDelayTimer), delete this
						._mouseDelayTimer), this.ignoreMissingWhich = !1, d = !1, t.preventDefault()
			},
			_mouseDistanceMet: function(t) {
				return Math.max(Math.abs(this._mouseDownEvent.pageX - t.pageX), Math.abs(this
					._mouseDownEvent.pageY - t.pageY)) >= this.options.distance
			},
			_mouseDelayMet: function() {
				return this.mouseDelayMet
			},
			_mouseStart: function() {},
			_mouseDrag: function() {},
			_mouseStop: function() {},
			_mouseCapture: function() {
				return !0
			}
		}), x.widget("ui.selectmenu", [x.ui.formResetMixin, {
			version: "1.12.1",
			defaultElement: "<select>",
			options: {
				appendTo: null,
				classes: {
					"ui-selectmenu-button-open": "ui-corner-top",
					"ui-selectmenu-button-closed": "ui-corner-all"
				},
				disabled: null,
				icons: {
					button: "ui-icon-triangle-1-s"
				},
				position: {
					my: "left top",
					at: "left bottom",
					collision: "none"
				},
				width: !1,
				change: null,
				close: null,
				focus: null,
				open: null,
				select: null
			},
			_create: function() {
				var t = this.element.uniqueId().attr("id");
				this.ids = {
						element: t,
						button: t + "-button",
						menu: t + "-menu"
					}, this._drawButton(), this._drawMenu(), this._bindFormResetHandler(), this
					._rendered = !1, this.menuItems = x()
			},
			_drawButton: function() {
				var t, e = this,
					n = this._parseOption(this.element.find("option:selected"), this.element[0]
						.selectedIndex);
				this.labels = this.element.labels().attr("for", this.ids.button), this._on(this
						.labels, {
							click: function(t) {
								this.button.focus(), t.preventDefault()
							}
						}), this.element.hide(), this.button = x("<span>", {
						tabindex: this.options.disabled ? -1 : 0,
						id: this.ids.button,
						role: "combobox",
						"aria-expanded": "false",
						"aria-autocomplete": "list",
						"aria-owns": this.ids.menu,
						"aria-haspopup": "true",
						title: this.element.attr("title")
					}).insertAfter(this.element), this._addClass(this.button,
						"ui-selectmenu-button ui-selectmenu-button-closed", "ui-button ui-widget"),
					t = x("<span>").appendTo(this.button), this._addClass(t, "ui-selectmenu-icon",
						"ui-icon " + this.options.icons.button), this.buttonItem = this
					._renderButtonItem(n).appendTo(this.button), !1 !== this.options.width && this
					._resizeButton(), this._on(this.button, this._buttonEvents), this.button.one(
						"focusin",
						function() {
							e._rendered || e._refreshMenu()
						})
			},
			_drawMenu: function() {
				var n = this;
				this.menu = x("<ul>", {
						"aria-hidden": "true",
						"aria-labelledby": this.ids.button,
						id: this.ids.menu
					}), this.menuWrap = x("<div>").append(this.menu), this._addClass(this.menuWrap,
						"ui-selectmenu-menu", "ui-front"), this.menuWrap.appendTo(this._appendTo()),
					this.menuInstance = this.menu.menu({
						classes: {
							"ui-menu": "ui-corner-bottom"
						},
						role: "listbox",
						select: function(t, e) {
							t.preventDefault(), n._setSelection(), n._select(e.item.data(
								"ui-selectmenu-item"), t)
						},
						focus: function(t, e) {
							e = e.item.data("ui-selectmenu-item");
							null != n.focusIndex && e.index !== n.focusIndex && (n._trigger(
									"focus", t, {
										item: e
									}), n.isOpen || n._select(e, t)), n.focusIndex = e
								.index, n.button.attr("aria-activedescendant", n.menuItems
									.eq(e.index).attr("id"))
						}
					}).menu("instance"), this.menuInstance._off(this.menu, "mouseleave"), this
					.menuInstance._closeOnDocumentClick = function() {
						return !1
					}, this.menuInstance._isDivider = function() {
						return !1
					}
			},
			refresh: function() {
				this._refreshMenu(), this.buttonItem.replaceWith(this.buttonItem = this
					._renderButtonItem(this._getSelectedItem().data("ui-selectmenu-item") || {})
					), null === this.options.width && this._resizeButton()
			},
			_refreshMenu: function() {
				var t = this.element.find("option");
				this.menu.empty(), this._parseOptions(t), this._renderMenu(this.menu, this.items),
					this.menuInstance.refresh(), this.menuItems = this.menu.find("li").not(
						".ui-selectmenu-optgroup").find(".ui-menu-item-wrapper"), this._rendered = !
					0, t.length && (t = this._getSelectedItem(), this.menuInstance.focus(null, t),
						this._setAria(t.data("ui-selectmenu-item")), this._setOption("disabled",
							this.element.prop("disabled")))
			},
			open: function(t) {
				this.options.disabled || (this._rendered ? (this._removeClass(this.menu.find(
							".ui-state-active"), null, "ui-state-active"), this.menuInstance
						.focus(null, this._getSelectedItem())) : this._refreshMenu(), this
					.menuItems.length && (this.isOpen = !0, this._toggleAttr(), this
						._resizeMenu(), this._position(), this._on(this.document, this
							._documentClick), this._trigger("open", t)))
			},
			_position: function() {
				this.menuWrap.position(x.extend({
					of: this.button
				}, this.options.position))
			},
			close: function(t) {
				this.isOpen && (this.isOpen = !1, this._toggleAttr(), this.range = null, this._off(
					this.document), this._trigger("close", t))
			},
			widget: function() {
				return this.button
			},
			menuWidget: function() {
				return this.menu
			},
			_renderButtonItem: function(t) {
				var e = x("<span>");
				return this._setText(e, t.label), this._addClass(e, "ui-selectmenu-text"), e
			},
			_renderMenu: function(r, t) {
				var i = this,
					o = "";
				x.each(t, function(t, e) {
					var n;
					e.optgroup !== o && (n = x("<li>", {
							text: e.optgroup
						}), i._addClass(n, "ui-selectmenu-optgroup", "ui-menu-divider" +
							(e.element.parent("optgroup").prop("disabled") ?
								" ui-state-disabled" : "")), n.appendTo(r), o = e
						.optgroup), i._renderItemData(r, e)
				})
			},
			_renderItemData: function(t, e) {
				return this._renderItem(t, e).data("ui-selectmenu-item", e)
			},
			_renderItem: function(t, e) {
				var n = x("<li>"),
					r = x("<div>", {
						title: e.element.attr("title")
					});
				return e.disabled && this._addClass(n, null, "ui-state-disabled"), this._setText(r,
					e.label), n.append(r).appendTo(t)
			},
			_setText: function(t, e) {
				e ? t.text(e) : t.html("&#160;")
			},
			_move: function(t, e) {
				var n, r = ".ui-menu-item";
				this.isOpen ? n = this.menuItems.eq(this.focusIndex).parent("li") : (n = this
					.menuItems.eq(this.element[0].selectedIndex).parent("li"), r +=
					":not(.ui-state-disabled)"), (r = "first" === t || "last" === t ? n[
						"first" === t ? "prevAll" : "nextAll"](r).eq(-1) : n[t + "All"](r).eq(
					0)).length && this.menuInstance.focus(e, r)
			},
			_getSelectedItem: function() {
				return this.menuItems.eq(this.element[0].selectedIndex).parent("li")
			},
			_toggle: function(t) {
				this[this.isOpen ? "close" : "open"](t)
			},
			_setSelection: function() {
				var t;
				this.range && (window.getSelection ? ((t = window.getSelection()).removeAllRanges(),
					t.addRange(this.range)) : this.range.select(), this.button.focus())
			},
			_documentClick: {
				mousedown: function(t) {
					this.isOpen && (x(t.target).closest(".ui-selectmenu-menu, #" + x.ui
						.escapeSelector(this.ids.button)).length || this.close(t))
				}
			},
			_buttonEvents: {
				mousedown: function() {
					var t;
					window.getSelection ? (t = window.getSelection()).rangeCount && (this.range = t
						.getRangeAt(0)) : this.range = document.selection.createRange()
				},
				click: function(t) {
					this._setSelection(), this._toggle(t)
				},
				keydown: function(t) {
					var e = !0;
					switch (t.keyCode) {
						case x.ui.keyCode.TAB:
						case x.ui.keyCode.ESCAPE:
							this.close(t), e = !1;
							break;
						case x.ui.keyCode.ENTER:
							this.isOpen && this._selectFocusedItem(t);
							break;
						case x.ui.keyCode.UP:
							t.altKey ? this._toggle(t) : this._move("prev", t);
							break;
						case x.ui.keyCode.DOWN:
							t.altKey ? this._toggle(t) : this._move("next", t);
							break;
						case x.ui.keyCode.SPACE:
							this.isOpen ? this._selectFocusedItem(t) : this._toggle(t);
							break;
						case x.ui.keyCode.LEFT:
							this._move("prev", t);
							break;
						case x.ui.keyCode.RIGHT:
							this._move("next", t);
							break;
						case x.ui.keyCode.HOME:
						case x.ui.keyCode.PAGE_UP:
							this._move("first", t);
							break;
						case x.ui.keyCode.END:
						case x.ui.keyCode.PAGE_DOWN:
							this._move("last", t);
							break;
						default:
							this.menu.trigger(t), e = !1
					}
					e && t.preventDefault()
				}
			},
			_selectFocusedItem: function(t) {
				var e = this.menuItems.eq(this.focusIndex).parent("li");
				e.hasClass("ui-state-disabled") || this._select(e.data("ui-selectmenu-item"), t)
			},
			_select: function(t, e) {
				var n = this.element[0].selectedIndex;
				this.element[0].selectedIndex = t.index, this.buttonItem.replaceWith(this
					.buttonItem = this._renderButtonItem(t)), this._setAria(t), this._trigger(
					"select", e, {
						item: t
					}), t.index !== n && this._trigger("change", e, {
					item: t
				}), this.close(e)
			},
			_setAria: function(t) {
				t = this.menuItems.eq(t.index).attr("id");
				this.button.attr({
					"aria-labelledby": t,
					"aria-activedescendant": t
				}), this.menu.attr("aria-activedescendant", t)
			},
			_setOption: function(t, e) {
				var n;
				"icons" === t && (n = this.button.find("span.ui-icon"), this._removeClass(n, null,
						this.options.icons.button)._addClass(n, null, e.button)), this._super(t, e),
					"appendTo" === t && this.menuWrap.appendTo(this._appendTo()), "width" === t &&
					this._resizeButton()
			},
			_setOptionDisabled: function(t) {
				this._super(t), this.menuInstance.option("disabled", t), this.button.attr(
					"aria-disabled", t), this._toggleClass(this.button, null,
					"ui-state-disabled", t), this.element.prop("disabled", t), t ? (this.button
					.attr("tabindex", -1), this.close()) : this.button.attr("tabindex", 0)
			},
			_appendTo: function() {
				var t = this.options.appendTo;
				return (t = t && (t.jquery || t.nodeType ? x(t) : this.document.find(t).eq(0))) &&
					t[0] || (t = this.element.closest(".ui-front, dialog")), t.length || (t = this
						.document[0].body), t
			},
			_toggleAttr: function() {
				this.button.attr("aria-expanded", this.isOpen), this._removeClass(this.button,
						"ui-selectmenu-button-" + (this.isOpen ? "closed" : "open"))._addClass(this
						.button, "ui-selectmenu-button-" + (this.isOpen ? "open" : "closed"))
					._toggleClass(this.menuWrap, "ui-selectmenu-open", null, this.isOpen), this.menu
					.attr("aria-hidden", !this.isOpen)
			},
			_resizeButton: function() {
				var t = this.options.width;
				!1 !== t ? (null === t && (t = this.element.show().outerWidth(), this.element
				.hide()), this.button.outerWidth(t)) : this.button.css("width", "")
			},
			_resizeMenu: function() {
				this.menu.outerWidth(Math.max(this.button.outerWidth(), this.menu.width("")
					.outerWidth() + 1))
			},
			_getCreateOptions: function() {
				var t = this._super();
				return t.disabled = this.element.prop("disabled"), t
			},
			_parseOptions: function(t) {
				var n = this,
					r = [];
				t.each(function(t, e) {
					r.push(n._parseOption(x(e), t))
				}), this.items = r
			},
			_parseOption: function(t, e) {
				var n = t.parent("optgroup");
				return {
					element: t,
					index: e,
					value: t.val(),
					label: t.text(),
					optgroup: n.attr("label") || "",
					disabled: n.prop("disabled") || t.prop("disabled")
				}
			},
			_destroy: function() {
				this._unbindFormResetHandler(), this.menuWrap.remove(), this.button.remove(), this
					.element.show(), this.element.removeUniqueId(), this.labels.attr("for", this.ids
						.element)
			}
		}]), x.widget("ui.slider", x.ui.mouse, {
			version: "1.12.1",
			widgetEventPrefix: "slide",
			options: {
				animate: !1,
				classes: {
					"ui-slider": "ui-corner-all",
					"ui-slider-handle": "ui-corner-all",
					"ui-slider-range": "ui-corner-all ui-widget-header"
				},
				distance: 0,
				max: 100,
				min: 0,
				orientation: "horizontal",
				range: !1,
				step: 1,
				value: 0,
				values: null,
				change: null,
				slide: null,
				start: null,
				stop: null
			},
			numPages: 5,
			_create: function() {
				this._keySliding = !1, this._mouseSliding = !1, this._animateOff = !0, this
					._handleIndex = null, this._detectOrientation(), this._mouseInit(), this
					._calculateNewMax(), this._addClass("ui-slider ui-slider-" + this.orientation,
						"ui-widget ui-widget-content"), this._refresh(), this._animateOff = !1
			},
			_refresh: function() {
				this._createRange(), this._createHandles(), this._setupEvents(), this._refreshValue()
			},
			_createHandles: function() {
				var t, e = this.options,
					n = this.element.find(".ui-slider-handle"),
					r = [],
					i = e.values && e.values.length || 1;
				for (n.length > i && (n.slice(i).remove(), n = n.slice(0, i)), t = n.length; t < i; t++)
					r.push("<span tabindex='0'></span>");
				this.handles = n.add(x(r.join("")).appendTo(this.element)), this._addClass(this.handles,
						"ui-slider-handle", "ui-state-default"), this.handle = this.handles.eq(0), this
					.handles.each(function(t) {
						x(this).data("ui-slider-handle-index", t).attr("tabIndex", 0)
					})
			},
			_createRange: function() {
				var t = this.options;
				t.range ? (!0 === t.range && (t.values ? t.values.length && 2 !== t.values.length ? t
						.values = [t.values[0], t.values[0]] : x.isArray(t.values) && (t.values = t
							.values.slice(0)) : t.values = [this._valueMin(), this._valueMin()]),
					this.range && this.range.length ? (this._removeClass(this.range,
						"ui-slider-range-min ui-slider-range-max"), this.range.css({
						left: "",
						bottom: ""
					})) : (this.range = x("<div>").appendTo(this.element), this._addClass(this
						.range, "ui-slider-range")), "min" !== t.range && "max" !== t.range || this
					._addClass(this.range, "ui-slider-range-" + t.range)) : (this.range && this
					.range.remove(), this.range = null)
			},
			_setupEvents: function() {
				this._off(this.handles), this._on(this.handles, this._handleEvents), this._hoverable(
					this.handles), this._focusable(this.handles)
			},
			_destroy: function() {
				this.handles.remove(), this.range && this.range.remove(), this._mouseDestroy()
			},
			_mouseCapture: function(t) {
				var n, r, i, o, e, s, a = this,
					u = this.options;
				return !u.disabled && (this.elementSize = {
						width: this.element.outerWidth(),
						height: this.element.outerHeight()
					}, this.elementOffset = this.element.offset(), s = {
						x: t.pageX,
						y: t.pageY
					}, n = this._normValueFromMouse(s), r = this._valueMax() - this._valueMin() + 1,
					this.handles.each(function(t) {
						var e = Math.abs(n - a.values(t));
						(e < r || r === e && (t === a._lastChangedValue || a.values(t) === u
							.min)) && (r = e, i = x(this), o = t)
					}), !1 !== this._start(t, o) && (this._mouseSliding = !0, this._handleIndex = o,
						this._addClass(i, null, "ui-state-active"), i.trigger("focus"), e = i
						.offset(), s = !x(t.target).parents().addBack().is(".ui-slider-handle"),
						this._clickOffset = s ? {
							left: 0,
							top: 0
						} : {
							left: t.pageX - e.left,
							top: t.pageY - e.top - i.height() / 2 - (parseInt(i.css(
								"borderTopWidth"), 10) || 0) - (parseInt(i.css(
								"borderBottomWidth"), 10) || 0) + (parseInt(i.css("marginTop"),
								10) || 0)
						}, this._animateOff = !0))
			},
			_mouseStart: function() {
				return !0
			},
			_mouseDrag: function(t) {
				var e = {
						x: t.pageX,
						y: t.pageY
					},
					e = this._normValueFromMouse(e);
				return this._slide(t, this._handleIndex, e), !1
			},
			_mouseStop: function(t) {
				return this._removeClass(this.handles, null, "ui-state-active"), this._mouseSliding = !
					1, this._stop(t, this._handleIndex), this._change(t, this._handleIndex), this
					._handleIndex = null, this._clickOffset = null, this._animateOff = !1
			},
			_detectOrientation: function() {
				this.orientation = "vertical" === this.options.orientation ? "vertical" : "horizontal"
			},
			_normValueFromMouse: function(t) {
				var e, t = "horizontal" === this.orientation ? (e = this.elementSize.width, t.x - this
					.elementOffset.left - (this._clickOffset ? this._clickOffset.left : 0)) : (e =
					this.elementSize.height, t.y - this.elementOffset.top - (this._clickOffset ?
						this._clickOffset.top : 0));
				return 1 < (t = t / e) && (t = 1), t < 0 && (t = 0), "vertical" === this.orientation &&
					(t = 1 - t), e = this._valueMax() - this._valueMin(), e = this._valueMin() + t * e,
					this._trimAlignValue(e)
			},
			_uiHash: function(t, e, n) {
				var r = {
					handle: this.handles[t],
					handleIndex: t,
					value: void 0 !== e ? e : this.value()
				};
				return this._hasMultipleValues() && (r.value = void 0 !== e ? e : this.values(t), r
					.values = n || this.values()), r
			},
			_hasMultipleValues: function() {
				return this.options.values && this.options.values.length
			},
			_start: function(t, e) {
				return this._trigger("start", t, this._uiHash(e))
			},
			_slide: function(t, e, n) {
				var r, i = this.value(),
					o = this.values();
				this._hasMultipleValues() && (r = this.values(e ? 0 : 1), i = this.values(e), 2 === this
					.options.values.length && !0 === this.options.range && (n = 0 === e ? Math.min(
						r, n) : Math.max(r, n)), o[e] = n), n !== i && !1 !== this._trigger("slide",
					t, this._uiHash(e, n, o)) && (this._hasMultipleValues() ? this.values(e, n) :
					this.value(n))
			},
			_stop: function(t, e) {
				this._trigger("stop", t, this._uiHash(e))
			},
			_change: function(t, e) {
				this._keySliding || this._mouseSliding || (this._lastChangedValue = e, this._trigger(
					"change", t, this._uiHash(e)))
			},
			value: function(t) {
				return arguments.length ? (this.options.value = this._trimAlignValue(t), this
					._refreshValue(), void this._change(null, 0)) : this._value()
			},
			values: function(t, e) {
				var n, r, i;
				if (1 < arguments.length) return this.options.values[t] = this._trimAlignValue(e), this
					._refreshValue(), void this._change(null, t);
				if (!arguments.length) return this._values();
				if (!x.isArray(t)) return this._hasMultipleValues() ? this._values(t) : this.value();
				for (n = this.options.values, r = t, i = 0; i < n.length; i += 1) n[i] = this
					._trimAlignValue(r[i]), this._change(null, i);
				this._refreshValue()
			},
			_setOption: function(t, e) {
				var n, r = 0;
				switch ("range" === t && !0 === this.options.range && ("min" === e ? (this.options
						.value = this._values(0), this.options.values = null) : "max" === e && (this
						.options.value = this._values(this.options.values.length - 1), this.options
						.values = null)), x.isArray(this.options.values) && (r = this.options.values
						.length), this._super(t, e), t) {
					case "orientation":
						this._detectOrientation(), this._removeClass(
								"ui-slider-horizontal ui-slider-vertical")._addClass("ui-slider-" + this
								.orientation), this._refreshValue(), this.options.range && this
							._refreshRange(e), this.handles.css("horizontal" === e ? "bottom" : "left",
								"");
						break;
					case "value":
						this._animateOff = !0, this._refreshValue(), this._change(null, 0), this
							._animateOff = !1;
						break;
					case "values":
						for (this._animateOff = !0, this._refreshValue(), n = r - 1; 0 <= n; n--) this
							._change(null, n);
						this._animateOff = !1;
						break;
					case "step":
					case "min":
					case "max":
						this._animateOff = !0, this._calculateNewMax(), this._refreshValue(), this
							._animateOff = !1;
						break;
					case "range":
						this._animateOff = !0, this._refresh(), this._animateOff = !1
				}
			},
			_setOptionDisabled: function(t) {
				this._super(t), this._toggleClass(null, "ui-state-disabled", !!t)
			},
			_value: function() {
				var t = this.options.value;
				return this._trimAlignValue(t)
			},
			_values: function(t) {
				var e, n, r;
				if (arguments.length) return e = this.options.values[t], this._trimAlignValue(e);
				if (this._hasMultipleValues()) {
					for (n = this.options.values.slice(), r = 0; r < n.length; r += 1) n[r] = this
						._trimAlignValue(n[r]);
					return n
				}
				return []
			},
			_trimAlignValue: function(t) {
				if (t <= this._valueMin()) return this._valueMin();
				if (t >= this._valueMax()) return this._valueMax();
				var e = 0 < this.options.step ? this.options.step : 1,
					n = (t - this._valueMin()) % e,
					t = t - n;
				return 2 * Math.abs(n) >= e && (t += 0 < n ? e : -e), parseFloat(t.toFixed(5))
			},
			_calculateNewMax: function() {
				var t = this.options.max,
					e = this._valueMin(),
					n = this.options.step;
				(t = Math.round((t - e) / n) * n + e) > this.options.max && (t -= n), this.max =
					parseFloat(t.toFixed(this._precision()))
			},
			_precision: function() {
				var t = this._precisionOf(this.options.step);
				return null !== this.options.min && (t = Math.max(t, this._precisionOf(this.options
					.min))), t
			},
			_precisionOf: function(t) {
				var e = t.toString(),
					t = e.indexOf(".");
				return -1 === t ? 0 : e.length - t - 1
			},
			_valueMin: function() {
				return this.options.min
			},
			_valueMax: function() {
				return this.max
			},
			_refreshRange: function(t) {
				"vertical" === t && this.range.css({
					width: "",
					left: ""
				}), "horizontal" === t && this.range.css({
					height: "",
					bottom: ""
				})
			},
			_refreshValue: function() {
				var e, n, t, r, i, o = this.options.range,
					s = this.options,
					a = this,
					u = !this._animateOff && s.animate,
					c = {};
				this._hasMultipleValues() ? this.handles.each(function(t) {
					n = (a.values(t) - a._valueMin()) / (a._valueMax() - a._valueMin()) * 100,
						c["horizontal" === a.orientation ? "left" : "bottom"] = n + "%", x(this)
						.stop(1, 1)[u ? "animate" : "css"](c, s.animate), !0 === a.options
						.range && ("horizontal" === a.orientation ? (0 === t && a.range.stop(1,
							1)[u ? "animate" : "css"]({
							left: n + "%"
						}, s.animate), 1 === t && a.range[u ? "animate" : "css"]({
							width: n - e + "%"
						}, {
							queue: !1,
							duration: s.animate
						})) : (0 === t && a.range.stop(1, 1)[u ? "animate" : "css"]({
							bottom: n + "%"
						}, s.animate), 1 === t && a.range[u ? "animate" : "css"]({
							height: n - e + "%"
						}, {
							queue: !1,
							duration: s.animate
						}))), e = n
				}) : (t = this.value(), r = this._valueMin(), i = this._valueMax(), n = i !== r ? (
						t - r) / (i - r) * 100 : 0, c["horizontal" === this.orientation ? "left" :
						"bottom"] = n + "%", this.handle.stop(1, 1)[u ? "animate" : "css"](c, s
						.animate), "min" === o && "horizontal" === this.orientation && this.range
					.stop(1, 1)[u ? "animate" : "css"]({
						width: n + "%"
					}, s.animate), "max" === o && "horizontal" === this.orientation && this.range
					.stop(1, 1)[u ? "animate" : "css"]({
						width: 100 - n + "%"
					}, s.animate), "min" === o && "vertical" === this.orientation && this.range
					.stop(1, 1)[u ? "animate" : "css"]({
						height: n + "%"
					}, s.animate), "max" === o && "vertical" === this.orientation && this.range
					.stop(1, 1)[u ? "animate" : "css"]({
						height: 100 - n + "%"
					}, s.animate))
			},
			_handleEvents: {
				keydown: function(t) {
					var e, n, r, i = x(t.target).data("ui-slider-handle-index");
					switch (t.keyCode) {
						case x.ui.keyCode.HOME:
						case x.ui.keyCode.END:
						case x.ui.keyCode.PAGE_UP:
						case x.ui.keyCode.PAGE_DOWN:
						case x.ui.keyCode.UP:
						case x.ui.keyCode.RIGHT:
						case x.ui.keyCode.DOWN:
						case x.ui.keyCode.LEFT:
							if (t.preventDefault(), !this._keySliding && (this._keySliding = !0, this
									._addClass(x(t.target), null, "ui-state-active"), !1 === this
									._start(t, i))) return
					}
					switch (r = this.options.step, e = n = this._hasMultipleValues() ? this.values(i) :
						this.value(), t.keyCode) {
						case x.ui.keyCode.HOME:
							n = this._valueMin();
							break;
						case x.ui.keyCode.END:
							n = this._valueMax();
							break;
						case x.ui.keyCode.PAGE_UP:
							n = this._trimAlignValue(e + (this._valueMax() - this._valueMin()) / this
								.numPages);
							break;
						case x.ui.keyCode.PAGE_DOWN:
							n = this._trimAlignValue(e - (this._valueMax() - this._valueMin()) / this
								.numPages);
							break;
						case x.ui.keyCode.UP:
						case x.ui.keyCode.RIGHT:
							if (e === this._valueMax()) return;
							n = this._trimAlignValue(e + r);
							break;
						case x.ui.keyCode.DOWN:
						case x.ui.keyCode.LEFT:
							if (e === this._valueMin()) return;
							n = this._trimAlignValue(e - r)
					}
					this._slide(t, i, n)
				},
				keyup: function(t) {
					var e = x(t.target).data("ui-slider-handle-index");
					this._keySliding && (this._keySliding = !1, this._stop(t, e), this._change(t, e),
						this._removeClass(x(t.target), null, "ui-state-active"))
				}
			}
		}), x.widget("ui.spinner", {
			version: "1.12.1",
			defaultElement: "<input>",
			widgetEventPrefix: "spin",
			options: {
				classes: {
					"ui-spinner": "ui-corner-all",
					"ui-spinner-down": "ui-corner-br",
					"ui-spinner-up": "ui-corner-tr"
				},
				culture: null,
				icons: {
					down: "ui-icon-triangle-1-s",
					up: "ui-icon-triangle-1-n"
				},
				incremental: !0,
				max: null,
				min: null,
				numberFormat: null,
				page: 10,
				step: 1,
				change: null,
				spin: null,
				start: null,
				stop: null
			},
			_create: function() {
				this._setOption("max", this.options.max), this._setOption("min", this.options.min), this
					._setOption("step", this.options.step), "" !== this.value() && this._value(this
						.element.val(), !0), this._draw(), this._on(this._events), this._refresh(), this
					._on(this.window, {
						beforeunload: function() {
							this.element.removeAttr("autocomplete")
						}
					})
			},
			_getCreateOptions: function() {
				var r = this._super(),
					i = this.element;
				return x.each(["min", "max", "step"], function(t, e) {
					var n = i.attr(e);
					null != n && n.length && (r[e] = n)
				}), r
			},
			_events: {
				keydown: function(t) {
					this._start(t) && this._keydown(t) && t.preventDefault()
				},
				keyup: "_stop",
				focus: function() {
					this.previous = this.element.val()
				},
				blur: function(t) {
					this.cancelBlur ? delete this.cancelBlur : (this._stop(), this._refresh(), this
						.previous !== this.element.val() && this._trigger("change", t))
				},
				mousewheel: function(t, e) {
					if (e) {
						if (!this.spinning && !this._start(t)) return !1;
						this._spin((0 < e ? 1 : -1) * this.options.step, t), clearTimeout(this
							.mousewheelTimer), this.mousewheelTimer = this._delay(function() {
							this.spinning && this._stop(t)
						}, 100), t.preventDefault()
					}
				},
				"mousedown .ui-spinner-button": function(t) {
					var e;

					function n() {
						this.element[0] === x.ui.safeActiveElement(this.document[0]) || (this.element
							.trigger("focus"), this.previous = e, this._delay(function() {
								this.previous = e
							}))
					}
					e = this.element[0] === x.ui.safeActiveElement(this.document[0]) ? this.previous :
						this.element.val(), t.preventDefault(), n.call(this), this.cancelBlur = !0, this
						._delay(function() {
							delete this.cancelBlur, n.call(this)
						}), !1 !== this._start(t) && this._repeat(null, x(t.currentTarget).hasClass(
							"ui-spinner-up") ? 1 : -1, t)
				},
				"mouseup .ui-spinner-button": "_stop",
				"mouseenter .ui-spinner-button": function(t) {
					if (x(t.currentTarget).hasClass("ui-state-active")) return !1 !== this._start(t) &&
						void this._repeat(null, x(t.currentTarget).hasClass("ui-spinner-up") ? 1 : -
							1, t)
				},
				"mouseleave .ui-spinner-button": "_stop"
			},
			_enhance: function() {
				this.uiSpinner = this.element.attr("autocomplete", "off").wrap("<span>").parent()
					.append("<a></a><a></a>")
			},
			_draw: function() {
				this._enhance(), this._addClass(this.uiSpinner, "ui-spinner",
						"ui-widget ui-widget-content"), this._addClass("ui-spinner-input"), this.element
					.attr("role", "spinbutton"), this.buttons = this.uiSpinner.children("a").attr(
						"tabIndex", -1).attr("aria-hidden", !0).button({
						classes: {
							"ui-button": ""
						}
					}), this._removeClass(this.buttons, "ui-corner-all"), this._addClass(this.buttons
						.first(), "ui-spinner-button ui-spinner-up"), this._addClass(this.buttons
					.last(), "ui-spinner-button ui-spinner-down"), this.buttons.first().button({
						icon: this.options.icons.up,
						showLabel: !1
					}), this.buttons.last().button({
						icon: this.options.icons.down,
						showLabel: !1
					}), this.buttons.height() > Math.ceil(.5 * this.uiSpinner.height()) && 0 < this
					.uiSpinner.height() && this.uiSpinner.height(this.uiSpinner.height())
			},
			_keydown: function(t) {
				var e = this.options,
					n = x.ui.keyCode;
				switch (t.keyCode) {
					case n.UP:
						return this._repeat(null, 1, t), !0;
					case n.DOWN:
						return this._repeat(null, -1, t), !0;
					case n.PAGE_UP:
						return this._repeat(null, e.page, t), !0;
					case n.PAGE_DOWN:
						return this._repeat(null, -e.page, t), !0
				}
				return !1
			},
			_start: function(t) {
				return !(!this.spinning && !1 === this._trigger("start", t)) && (this.counter || (this
					.counter = 1), this.spinning = !0)
			},
			_repeat: function(t, e, n) {
				t = t || 500, clearTimeout(this.timer), this.timer = this._delay(function() {
					this._repeat(40, e, n)
				}, t), this._spin(e * this.options.step, n)
			},
			_spin: function(t, e) {
				var n = this.value() || 0;
				this.counter || (this.counter = 1), n = this._adjustValue(n + t * this._increment(this
					.counter)), this.spinning && !1 === this._trigger("spin", e, {
					value: n
				}) || (this._value(n), this.counter++)
			},
			_increment: function(t) {
				var e = this.options.incremental;
				return e ? x.isFunction(e) ? e(t) : Math.floor(t * t * t / 5e4 - t * t / 500 + 17 * t /
					200 + 1) : 1
			},
			_precision: function() {
				var t = this._precisionOf(this.options.step);
				return null !== this.options.min && (t = Math.max(t, this._precisionOf(this.options
					.min))), t
			},
			_precisionOf: function(t) {
				var e = t.toString(),
					t = e.indexOf(".");
				return -1 === t ? 0 : e.length - t - 1
			},
			_adjustValue: function(t) {
				var e, n = this.options,
					r = t - (e = null !== n.min ? n.min : 0);
				return t = e + Math.round(r / n.step) * n.step, t = parseFloat(t.toFixed(this
						._precision())), null !== n.max && t > n.max ? n.max : null !== n.min && t < n
					.min ? n.min : t
			},
			_stop: function(t) {
				this.spinning && (clearTimeout(this.timer), clearTimeout(this.mousewheelTimer), this
					.counter = 0, this.spinning = !1, this._trigger("stop", t))
			},
			_setOption: function(t, e) {
				var n;
				if ("culture" === t || "numberFormat" === t) return n = this._parse(this.element.val()),
					this.options[t] = e, void this.element.val(this._format(n));
				"max" !== t && "min" !== t && "step" !== t || "string" == typeof e && (e = this._parse(
					e)), "icons" === t && (n = this.buttons.first().find(".ui-icon"), this
					._removeClass(n, null, this.options.icons.up), this._addClass(n, null, e.up),
					n = this.buttons.last().find(".ui-icon"), this._removeClass(n, null, this
						.options.icons.down), this._addClass(n, null, e.down)), this._super(t, e)
			},
			_setOptionDisabled: function(t) {
				this._super(t), this._toggleClass(this.uiSpinner, null, "ui-state-disabled", !!t), this
					.element.prop("disabled", !!t), this.buttons.button(t ? "disable" : "enable")
			},
			_setOptions: g(function(t) {
				this._super(t)
			}),
			_parse: function(t) {
				return "string" == typeof t && "" !== t && (t = window.Globalize && this.options
						.numberFormat ? Globalize.parseFloat(t, 10, this.options.culture) : +t), "" ===
					t || isNaN(t) ? null : t
			},
			_format: function(t) {
				return "" === t ? "" : window.Globalize && this.options.numberFormat ? Globalize.format(
					t, this.options.numberFormat, this.options.culture) : t
			},
			_refresh: function() {
				this.element.attr({
					"aria-valuemin": this.options.min,
					"aria-valuemax": this.options.max,
					"aria-valuenow": this._parse(this.element.val())
				})
			},
			isValid: function() {
				var t = this.value();
				return null !== t && t === this._adjustValue(t)
			},
			_value: function(t, e) {
				var n;
				"" !== t && null !== (n = this._parse(t)) && (e || (n = this._adjustValue(n)), t = this
					._format(n)), this.element.val(t), this._refresh()
			},
			_destroy: function() {
				this.element.prop("disabled", !1).removeAttr(
						"autocomplete role aria-valuemin aria-valuemax aria-valuenow"), this.uiSpinner
					.replaceWith(this.element)
			},
			stepUp: g(function(t) {
				this._stepUp(t)
			}),
			_stepUp: function(t) {
				this._start() && (this._spin((t || 1) * this.options.step), this._stop())
			},
			stepDown: g(function(t) {
				this._stepDown(t)
			}),
			_stepDown: function(t) {
				this._start() && (this._spin((t || 1) * -this.options.step), this._stop())
			},
			pageUp: g(function(t) {
				this._stepUp((t || 1) * this.options.page)
			}),
			pageDown: g(function(t) {
				this._stepDown((t || 1) * this.options.page)
			}),
			value: function(t) {
				if (!arguments.length) return this._parse(this.element.val());
				g(this._value).call(this, t)
			},
			widget: function() {
				return this.uiSpinner
			}
		}), !1 !== x.uiBackCompat && x.widget("ui.spinner", x.ui.spinner, {
			_enhance: function() {
				this.uiSpinner = this.element.attr("autocomplete", "off").wrap(this._uiSpinnerHtml())
					.parent().append(this._buttonHtml())
			},
			_uiSpinnerHtml: function() {
				return "<span>"
			},
			_buttonHtml: function() {
				return "<a></a><a></a>"
			}
		}), x.ui.spinner
	};
	"function" == typeof define && define.amd ? define(["jquery"], t) : t(jQuery)
}(),
function(t) {
	"function" == typeof define && define.amd ? define(["jquery"], t) : "object" == typeof exports ? module.exports =
		t : t(jQuery)
}(function(l) {
	function e(t) {
		var e, n = t || window.event,
			r = g.call(arguments, 1),
			i = 0,
			o = 0,
			s = 0,
			a = 0,
			u = 0,
			c = 0;
		if ((t = l.event.fix(n)).type = "mousewheel", "detail" in n && (s = -1 * n.detail), "wheelDelta" in n && (
				s = n.wheelDelta), "wheelDeltaY" in n && (s = n.wheelDeltaY), "wheelDeltaX" in n && (o = -1 * n
				.wheelDeltaX), "axis" in n && n.axis === n.HORIZONTAL_AXIS && (o = -1 * s, s = 0), i = 0 === s ? o :
			s, "deltaY" in n && (i = s = -1 * n.deltaY), "deltaX" in n && (o = n.deltaX, 0 === s && (i = -1 * o)),
			0 !== s || 0 !== o) {
			1 === n.deltaMode ? (i *= e = l.data(this, "mousewheel-line-height"), s *= e, o *= e) : 2 === n
				.deltaMode && (i *= e = l.data(this, "mousewheel-page-height"), s *= e, o *= e);
			var a = Math.max(Math.abs(s), Math.abs(o));
			return d && !(a < d) || f(n, d = a) && (d /= 40), f(n, a) && (i /= 40, o /= 40, s /= 40), i = Math[1 <=
					i ? "floor" : "ceil"](i / d), o = Math[1 <= o ? "floor" : "ceil"](o / d), s = Math[1 <= s ?
					"floor" : "ceil"](s / d), m.settings.normalizeOffset && this.getBoundingClientRect && (a = this
					.getBoundingClientRect(), u = t.clientX - a.left, c = t.clientY - a.top), t.deltaX = o, t
				.deltaY = s, t.deltaFactor = d, t.offsetX = u, t.offsetY = c, t.deltaMode = 0, r.unshift(t, i, o,
				s), p && clearTimeout(p), p = setTimeout(h, 200), (l.event.dispatch || l.event.handle).apply(this,
					r)
		}
	}

	function h() {
		d = null
	}

	function f(t, e) {
		return m.settings.adjustOldDeltas && "mousewheel" === t.type && e % 120 == 0
	}
	var p, d, t = ["wheel", "mousewheel", "DOMMouseScroll", "MozMousePixelScroll"],
		n = "onwheel" in document || 9 <= document.documentMode ? ["wheel"] : ["mousewheel", "DomMouseScroll",
			"MozMousePixelScroll"
		],
		g = Array.prototype.slice;
	if (l.event.fixHooks)
		for (var r = t.length; r;) l.event.fixHooks[t[--r]] = l.event.mouseHooks;
	var m = l.event.special.mousewheel = {
		version: "3.1.12",
		setup: function() {
			if (this.addEventListener)
				for (var t = n.length; t;) this.addEventListener(n[--t], e, !1);
			else this.onmousewheel = e;
			l.data(this, "mousewheel-line-height", m.getLineHeight(this)), l.data(this,
				"mousewheel-page-height", m.getPageHeight(this))
		},
		teardown: function() {
			if (this.removeEventListener)
				for (var t = n.length; t;) this.removeEventListener(n[--t], e, !1);
			else this.onmousewheel = null;
			l.removeData(this, "mousewheel-line-height"), l.removeData(this, "mousewheel-page-height")
		},
		getLineHeight: function(t) {
			var e = l(t),
				t = e["offsetParent" in l.fn ? "offsetParent" : "parent"]();
			return t.length || (t = l("body")), parseInt(t.css("fontSize"), 10) || parseInt(e.css(
				"fontSize"), 10) || 16
		},
		getPageHeight: function(t) {
			return l(t).height()
		},
		settings: {
			adjustOldDeltas: !0,
			normalizeOffset: !0
		}
	};
	l.fn.extend({
		mousewheel: function(t) {
			return t ? this.bind("mousewheel", t) : this.trigger("mousewheel")
		},
		unmousewheel: function(t) {
			return this.unbind("mousewheel", t)
		}
	})
}),
function(t) {
	var e;
	"object" == typeof exports && "undefined" != typeof module ? module.exports = t() : "function" == typeof define &&
		define.amd ? define([], t) : ("undefined" != typeof window ? e = window : "undefined" != typeof global ? e =
			global : "undefined" != typeof self && (e = self), e.html2canvas = t())
}(function() {
	return function r(i, o, s) {
		function a(n, t) {
			if (!o[n]) {
				if (!i[n]) {
					var e = "function" == typeof require && require;
					if (!t && e) return e(n, !0);
					if (u) return u(n, !0);
					e = new Error("Cannot find module '" + n + "'");
					throw e.code = "MODULE_NOT_FOUND", e
				}
				e = o[n] = {
					exports: {}
				};
				i[n][0].call(e.exports, function(t) {
					var e = i[n][1][t];
					return a(e || t)
				}, e, e.exports, r, i, o, s)
			}
			return o[n].exports
		}
		for (var u = "function" == typeof require && require, t = 0; t < s.length; t++) a(s[t]);
		return a
	}({
		1: [function(t, P, N) {
			(function(j) {
				! function(t) {
					function v(t) {
						throw RangeError(g[t])
					}

					function n(t, e) {
						for (var n = t.length; n--;) t[n] = e(t[n]);
						return t
					}

					function e(t, e) {
						return n(t.split(p), e).join(".")
					}

					function y(t) {
						for (var e, n, r = [], i = 0, o = t.length; i < o;) 55296 <= (e = t
							.charCodeAt(i++)) && e <= 56319 && i < o ? 56320 == (64512 & (
							n = t.charCodeAt(i++))) ? r.push(((1023 & e) << 10) + (1023 &
							n) + 65536) : (r.push(e), i--) : r.push(e);
						return r
					}

					function d(t) {
						return n(t, function(t) {
							var e = "";
							return 65535 < t && (e += A((t -= 65536) >>> 10 & 1023 |
								55296), t = 56320 | 1023 & t), e + A(t)
						}).join("")
					}

					function b(t, e) {
						return t + 22 + 75 * (t < 26) - ((0 != e) << 5)
					}

					function w(t, e, n) {
						var r = 0;
						for (t = n ? T(t / l) : t >> 1, t += T(t / e); m * k >> 1 < t; r += x)
							t = T(t / m);
						return T(r + (m + 1) * t / (t + c))
					}

					function r(t) {
						var e, n, r, i, o, s, a, u = [],
							c = t.length,
							l = 0,
							h = O,
							f = S,
							p = t.lastIndexOf(E);
						for (p < 0 && (p = 0), n = 0; n < p; ++n) 128 <= t.charCodeAt(n) && v(
							"not-basic"), u.push(t.charCodeAt(n));
						for (r = 0 < p ? p + 1 : 0; r < c;) {
							for (i = l, o = 1, s = x; c <= r && v("invalid-input"), a = t
								.charCodeAt(r++), (x <= (a = a - 48 < 10 ? a - 22 : a - 65 <
									26 ? a - 65 : a - 97 < 26 ? a - 97 : x) || a > T((_ -
									l) / o)) && v("overflow"), l += a * o, !(a < (a = s <= f ?
									C : f + k <= s ? k : s - f)); s += x) o > T(_ / (a = x -
								a)) && v("overflow"), o *= a;
							f = w(l - i, e = u.length + 1, 0 == i), T(l / e) > _ - h && v(
								"overflow"), h += T(l / e), l %= e, u.splice(l++, 0, h)
						}
						return d(u)
					}

					function i(t) {
						for (var e, n, r, i, o, s, a, u, c, l, h, f = [], p = (t = y(t)).length,
								d = O, g = S, m = e = 0; m < p; ++m)(u = t[m]) < 128 && f.push(
							A(u));
						for (n = r = f.length, r && f.push(E); n < p;) {
							for (i = _, m = 0; m < p; ++m) d <= (u = t[m]) && u < i && (i = u);
							for (i - d > T((_ - e) / (c = n + 1)) && v("overflow"), e += (i -
								d) * c, d = i, m = 0; m < p; ++m)
								if ((u = t[m]) < d && ++e > _ && v("overflow"), u == d) {
									for (o = e, s = x; !(o < (a = s <= g ? C : g + k <= s ? k :
											s - g)); s += x) h = o - a, l = x - a, f.push(A(b(
										a + h % l, 0))), o = T(h / l);
									f.push(A(b(o, 0))), g = w(e, c, n == r), e = 0, ++n
								}++ e, ++d
						}
						return f.join("")
					}
					var o = "object" == typeof N && N,
						s = "object" == typeof P && P && P.exports == o && P,
						a = "object" == typeof j && j;
					a.global !== a && a.window !== a || (t = a);
					var u, _ = 2147483647,
						x = 36,
						C = 1,
						k = 26,
						c = 38,
						l = 700,
						S = 72,
						O = 128,
						E = "-",
						h = /^xn--/,
						f = /[^ -~]/,
						p = /\x2E|\u3002|\uFF0E|\uFF61/g,
						g = {
							overflow: "Overflow: input needs wider integers to process",
							"not-basic": "Illegal input >= 0x80 (not a basic code point)",
							"invalid-input": "Invalid input"
						},
						m = x - C,
						T = Math.floor,
						A = String.fromCharCode,
						I = {
							version: "1.2.4",
							ucs2: {
								decode: y,
								encode: d
							},
							decode: r,
							encode: i,
							toASCII: function(t) {
								return e(t, function(t) {
									return f.test(t) ? "xn--" + i(t) : t
								})
							},
							toUnicode: function(t) {
								return e(t, function(t) {
									return h.test(t) ? r(t.slice(4).toLowerCase()) :
										t
								})
							}
						};
					if (0, o && !o.nodeType)
						if (s) s.exports = I;
						else
							for (u in I) I.hasOwnProperty(u) && (o[u] = I[u]);
					else t.punycode = I
				}(this)
			}).call(this, "undefined" != typeof global ? global : "undefined" != typeof self ?
				self : "undefined" != typeof window ? window : {})
		}, {}],
		2: [function(t, e) {
			function i(t, e) {
				for (var n = 3 === t.nodeType ? document.createTextNode(t.nodeValue) : t.cloneNode(!
						1), r = t.firstChild; r;) !0 !== e && 1 === r.nodeType && "SCRIPT" === r
					.nodeName || n.appendChild(i(r, e)), r = r.nextSibling;
				return 1 === t.nodeType && (n._scrollTop = t.scrollTop, n._scrollLeft = t
					.scrollLeft, "CANVAS" === t.nodeName ? function(e, t) {
						try {
							t && (t.width = e.width, t.height = e.height, t.getContext("2d")
								.putImageData(e.getContext("2d").getImageData(0, 0, e.width,
									e.height), 0, 0))
						} catch (t) {
							o("Unable to copy canvas content from", e, t)
						}
					}(t, n) : "TEXTAREA" !== t.nodeName && "SELECT" !== t.nodeName || (n.value =
						t.value)), n
			}
			var o = t("./log");
			e.exports = function(o, t, e, n, s, a, u) {
				var c = i(o.documentElement, s.javascriptEnabled),
					l = t.createElement("iframe");
				return l.className = "html2canvas-container", l.style.visibility = "hidden", l
					.style.position = "fixed", l.style.left = "-10000px", l.style.top = "0px", l
					.style.border = "0", l.width = e, l.height = n, l.scrolling = "no", t.body
					.appendChild(l), new Promise(function(e) {
						var t, n, r, i = l.contentWindow.document;
						l.contentWindow.onload = l.onload = function() {
								var t = setInterval(function() {
									0 < i.body.childNodes.length && (function t(e) {
											if (1 === e.nodeType) {
												e.scrollTop = e._scrollTop, e
													.scrollLeft = e._scrollLeft;
												for (var n = e.firstChild; n;)
													t(n), n = n.nextSibling
											}
										}(i.documentElement), clearInterval(t),
										"view" === s.type && (l.contentWindow
											.scrollTo(a, u), !
											/(iPad|iPhone|iPod)/g.test(navigator
												.userAgent) || l.contentWindow
											.scrollY === u && l.contentWindow
											.scrollX === a || (i.documentElement
												.style.top = -u + "px", i
												.documentElement.style.left = -
												a + "px", i.documentElement
												.style.position = "absolute")),
										e(l))
								}, 50)
							}, i.open(), i.write("<!DOCTYPE html><html></html>"), n = a, r =
							u, !(t = o).defaultView || n === t.defaultView.pageXOffset &&
							r === t.defaultView.pageYOffset || t.defaultView.scrollTo(n, r),
							i.replaceChild(i.adoptNode(c), i.documentElement), i.close()
					})
			}
		}, {
			"./log": 13
		}],
		3: [function(t, e) {
			function n(t) {
				this.r = 0, this.g = 0, this.b = 0, this.a = null, this.fromArray(t) || this
					.namedColor(t) || this.rgb(t) || this.rgba(t) || this.hex6(t) || this.hex3(t)
			}
			n.prototype.darken = function(t) {
				t = 1 - t;
				return new n([Math.round(this.r * t), Math.round(this.g * t), Math.round(this
					.b * t), this.a])
			}, n.prototype.isTransparent = function() {
				return 0 === this.a
			}, n.prototype.isBlack = function() {
				return 0 === this.r && 0 === this.g && 0 === this.b
			}, n.prototype.fromArray = function(t) {
				return Array.isArray(t) && (this.r = Math.min(t[0], 255), this.g = Math.min(t[
					1], 255), this.b = Math.min(t[2], 255), 3 < t.length && (this.a = t[
					3])), Array.isArray(t)
			};
			var r = /^#([a-f0-9]{3})$/i;
			n.prototype.hex3 = function(t) {
				var e;
				return null !== (e = t.match(r)) && (this.r = parseInt(e[1][0] + e[1][0], 16),
					this.g = parseInt(e[1][1] + e[1][1], 16), this.b = parseInt(e[1][2] + e[
						1][2], 16)), null !== e
			};
			var i = /^#([a-f0-9]{6})$/i;
			n.prototype.hex6 = function(t) {
				var e = null;
				return null !== (e = t.match(i)) && (this.r = parseInt(e[1].substring(0, 2),
					16), this.g = parseInt(e[1].substring(2, 4), 16), this.b = parseInt(e[1]
						.substring(4, 6), 16)), null !== e
			};
			var o = /^rgb\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*\)$/;
			n.prototype.rgb = function(t) {
				var e;
				return null !== (e = t.match(o)) && (this.r = Number(e[1]), this.g = Number(e[
					2]), this.b = Number(e[3])), null !== e
			};
			var s = /^rgba\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d?\.?\d+)\s*\)$/;
			n.prototype.rgba = function(t) {
				var e;
				return null !== (e = t.match(s)) && (this.r = Number(e[1]), this.g = Number(e[
					2]), this.b = Number(e[3]), this.a = Number(e[4])), null !== e
			}, n.prototype.toString = function() {
				return null !== this.a && 1 !== this.a ? "rgba(" + [this.r, this.g, this.b, this
					.a
				].join(",") + ")" : "rgb(" + [this.r, this.g, this.b].join(",") + ")"
			}, n.prototype.namedColor = function(t) {
				t = t.toLowerCase();
				var e = a[t];
				if (e) this.r = e[0], this.g = e[1], this.b = e[2];
				else if ("transparent" === t) return !(this.r = this.g = this.b = this.a = 0);
				return !!e
			}, n.prototype.isColor = !0;
			var a = {
				aliceblue: [240, 248, 255],
				antiquewhite: [250, 235, 215],
				aqua: [0, 255, 255],
				aquamarine: [127, 255, 212],
				azure: [240, 255, 255],
				beige: [245, 245, 220],
				bisque: [255, 228, 196],
				black: [0, 0, 0],
				blanchedalmond: [255, 235, 205],
				blue: [0, 0, 255],
				blueviolet: [138, 43, 226],
				brown: [165, 42, 42],
				burlywood: [222, 184, 135],
				cadetblue: [95, 158, 160],
				chartreuse: [127, 255, 0],
				chocolate: [210, 105, 30],
				coral: [255, 127, 80],
				cornflowerblue: [100, 149, 237],
				cornsilk: [255, 248, 220],
				crimson: [220, 20, 60],
				cyan: [0, 255, 255],
				darkblue: [0, 0, 139],
				darkcyan: [0, 139, 139],
				darkgoldenrod: [184, 134, 11],
				darkgray: [169, 169, 169],
				darkgreen: [0, 100, 0],
				darkgrey: [169, 169, 169],
				darkkhaki: [189, 183, 107],
				darkmagenta: [139, 0, 139],
				darkolivegreen: [85, 107, 47],
				darkorange: [255, 140, 0],
				darkorchid: [153, 50, 204],
				darkred: [139, 0, 0],
				darksalmon: [233, 150, 122],
				darkseagreen: [143, 188, 143],
				darkslateblue: [72, 61, 139],
				darkslategray: [47, 79, 79],
				darkslategrey: [47, 79, 79],
				darkturquoise: [0, 206, 209],
				darkviolet: [148, 0, 211],
				deeppink: [255, 20, 147],
				deepskyblue: [0, 191, 255],
				dimgray: [105, 105, 105],
				dimgrey: [105, 105, 105],
				dodgerblue: [30, 144, 255],
				firebrick: [178, 34, 34],
				floralwhite: [255, 250, 240],
				forestgreen: [34, 139, 34],
				fuchsia: [255, 0, 255],
				gainsboro: [220, 220, 220],
				ghostwhite: [248, 248, 255],
				gold: [255, 215, 0],
				goldenrod: [218, 165, 32],
				gray: [128, 128, 128],
				green: [0, 128, 0],
				greenyellow: [173, 255, 47],
				grey: [128, 128, 128],
				honeydew: [240, 255, 240],
				hotpink: [255, 105, 180],
				indianred: [205, 92, 92],
				indigo: [75, 0, 130],
				ivory: [255, 255, 240],
				khaki: [240, 230, 140],
				lavender: [230, 230, 250],
				lavenderblush: [255, 240, 245],
				lawngreen: [124, 252, 0],
				lemonchiffon: [255, 250, 205],
				lightblue: [173, 216, 230],
				lightcoral: [240, 128, 128],
				lightcyan: [224, 255, 255],
				lightgoldenrodyellow: [250, 250, 210],
				lightgray: [211, 211, 211],
				lightgreen: [144, 238, 144],
				lightgrey: [211, 211, 211],
				lightpink: [255, 182, 193],
				lightsalmon: [255, 160, 122],
				lightseagreen: [32, 178, 170],
				lightskyblue: [135, 206, 250],
				lightslategray: [119, 136, 153],
				lightslategrey: [119, 136, 153],
				lightsteelblue: [176, 196, 222],
				lightyellow: [255, 255, 224],
				lime: [0, 255, 0],
				limegreen: [50, 205, 50],
				linen: [250, 240, 230],
				magenta: [255, 0, 255],
				maroon: [128, 0, 0],
				mediumaquamarine: [102, 205, 170],
				mediumblue: [0, 0, 205],
				mediumorchid: [186, 85, 211],
				mediumpurple: [147, 112, 219],
				mediumseagreen: [60, 179, 113],
				mediumslateblue: [123, 104, 238],
				mediumspringgreen: [0, 250, 154],
				mediumturquoise: [72, 209, 204],
				mediumvioletred: [199, 21, 133],
				midnightblue: [25, 25, 112],
				mintcream: [245, 255, 250],
				mistyrose: [255, 228, 225],
				moccasin: [255, 228, 181],
				navajowhite: [255, 222, 173],
				navy: [0, 0, 128],
				oldlace: [253, 245, 230],
				olive: [128, 128, 0],
				olivedrab: [107, 142, 35],
				orange: [255, 165, 0],
				orangered: [255, 69, 0],
				orchid: [218, 112, 214],
				palegoldenrod: [238, 232, 170],
				palegreen: [152, 251, 152],
				paleturquoise: [175, 238, 238],
				palevioletred: [219, 112, 147],
				papayawhip: [255, 239, 213],
				peachpuff: [255, 218, 185],
				peru: [205, 133, 63],
				pink: [255, 192, 203],
				plum: [221, 160, 221],
				powderblue: [176, 224, 230],
				purple: [128, 0, 128],
				rebeccapurple: [102, 51, 153],
				red: [255, 0, 0],
				rosybrown: [188, 143, 143],
				royalblue: [65, 105, 225],
				saddlebrown: [139, 69, 19],
				salmon: [250, 128, 114],
				sandybrown: [244, 164, 96],
				seagreen: [46, 139, 87],
				seashell: [255, 245, 238],
				sienna: [160, 82, 45],
				silver: [192, 192, 192],
				skyblue: [135, 206, 235],
				slateblue: [106, 90, 205],
				slategray: [112, 128, 144],
				slategrey: [112, 128, 144],
				snow: [255, 250, 250],
				springgreen: [0, 255, 127],
				steelblue: [70, 130, 180],
				tan: [210, 180, 140],
				teal: [0, 128, 128],
				thistle: [216, 191, 216],
				tomato: [255, 99, 71],
				turquoise: [64, 224, 208],
				violet: [238, 130, 238],
				wheat: [245, 222, 179],
				white: [255, 255, 255],
				whitesmoke: [245, 245, 245],
				yellow: [255, 255, 0],
				yellowgreen: [154, 205, 50]
			};
			e.exports = n
		}, {}],
		4: [function(t, e) {
			function n(t, e) {
				var n, r, i = C++;
				if ((e = e || {}).logging && (y.options.logging = !0, y.options.start = Date.now()),
					e.async = void 0 === e.async || e.async, e.allowTaint = void 0 !== e
					.allowTaint && e.allowTaint, e.removeContainer = void 0 === e.removeContainer ||
					e.removeContainer, e.javascriptEnabled = void 0 !== e.javascriptEnabled && e
					.javascriptEnabled, e.imageTimeout = void 0 === e.imageTimeout ? 1e4 : e
					.imageTimeout, e.renderer = "function" == typeof e.renderer ? e.renderer : g, e
					.strict = !!e.strict, "string" == typeof t) {
					if ("string" != typeof e.proxy) return Promise.reject(
						"Proxy must be used when rendering url");
					var o = null != e.width ? e.width : window.innerWidth,
						s = null != e.height ? e.height : window.innerHeight;
					return w((n = t, (r = document.createElement("a")).href = n, r.href = r.href,
						r), e.proxy, document, o, s, e).then(function(t) {
						return f(t.contentWindow.document.documentElement, t, e, o, s)
					})
				}
				var a, u, c, l, h, t = (void 0 === t ? [document.documentElement] : t.length ? t : [
					t
				])[0];
				return t.setAttribute(x + i, i), a = t.ownerDocument, u = e, c = t.ownerDocument
					.defaultView.innerWidth, l = t.ownerDocument.defaultView.innerHeight, h = i, b(
						a, a, c, l, u, a.defaultView.pageXOffset, a.defaultView.pageYOffset).then(
						function(t) {
							y("Document cloned");
							var e = x + h,
								n = "[" + e + "='" + h + "']";
							a.querySelector(n).removeAttribute(e);
							var e = t.contentWindow,
								r = e.document.querySelector(n);
							return Promise.resolve("function" != typeof u.onclone || u.onclone(e
								.document)).then(function() {
								return f(r, t, u, c, l)
							})
						}).then(function(t) {
						return "function" == typeof e.onrendered && (y(
							"options.onrendered is deprecated, html2canvas returns a Promise containing the canvas"
							), e.onrendered(t)), t
					})
			}

			function f(n, r, i, t, e) {
				var o, s, a = r.contentWindow,
					u = new d(a.document),
					c = new m(i, u),
					l = _(n),
					s = "view" === i.type ? t : (s = a.document, Math.max(Math.max(s.body
						.scrollWidth, s.documentElement.scrollWidth), Math.max(s.body
						.offsetWidth, s.documentElement.offsetWidth), Math.max(s.body
						.clientWidth, s.documentElement.clientWidth))),
					o = "view" === i.type ? e : (o = a.document, Math.max(Math.max(o.body
						.scrollHeight, o.documentElement.scrollHeight), Math.max(o.body
						.offsetHeight, o.documentElement.offsetHeight), Math.max(o.body
						.clientHeight, o.documentElement.clientHeight))),
					h = new i.renderer(s, o, c, i, document);
				return new v(n, h, u, c, i).ready.then(function() {
					var t, e;
					return y("Finished rendering"), t = "view" === i.type ? p(h.canvas, {
							width: h.canvas.width,
							height: h.canvas.height,
							top: 0,
							left: 0,
							x: 0,
							y: 0
						}) : n === a.document.body || n === a.document.documentElement ||
						null != i.canvas ? h.canvas : p(h.canvas, {
							width: (null != i.width ? i : l).width,
							height: (null != i.height ? i : l).height,
							top: l.top,
							left: l.left,
							x: 0,
							y: 0
						}), e = r, i.removeContainer && (e.parentNode.removeChild(e), y(
							"Cleaned up container")), t
				})
			}

			function p(t, e) {
				var n = document.createElement("canvas"),
					r = Math.min(t.width - 1, Math.max(0, e.left)),
					i = Math.min(t.width, Math.max(1, e.left + e.width)),
					o = Math.min(t.height - 1, Math.max(0, e.top)),
					s = Math.min(t.height, Math.max(1, e.top + e.height));
				n.width = e.width, n.height = e.height;
				i -= r, s -= o;
				return y("Cropping canvas at:", "left:", e.left, "top:", e.top, "width:", i,
					"height:", s), y("Resulting crop with width", e.width, "and height", e
					.height, "with x", r, "and y", o), n.getContext("2d").drawImage(t, r, o, i,
					s, e.x, e.y, i, s), n
			}
			var d = t("./support"),
				g = t("./renderers/canvas"),
				m = t("./imageloader"),
				v = t("./nodeparser"),
				r = t("./nodecontainer"),
				y = t("./log"),
				i = t("./utils"),
				b = t("./clone"),
				w = t("./proxy").loadUrlDocument,
				_ = i.getBounds,
				x = "data-html2canvas-node",
				C = 0;
			n.CanvasRenderer = g, n.NodeContainer = r, n.log = y, n.utils = i;
			i = "undefined" == typeof document || "function" != typeof Object.create ||
				"function" != typeof document.createElement("canvas").getContext ? function() {
					return Promise.reject("No canvas support")
				} : n;
			e.exports = i
		}, {
			"./clone": 2,
			"./imageloader": 11,
			"./log": 13,
			"./nodecontainer": 14,
			"./nodeparser": 15,
			"./proxy": 16,
			"./renderers/canvas": 20,
			"./support": 22,
			"./utils": 26
		}],
		5: [function(t, e) {
			function r(t) {
				var n;
				this.src = t, i("DummyImageContainer for", t), this.promise && this.image || (i(
						"Initiating DummyImageContainer"), r.prototype.image = new Image, n =
					this.image, r.prototype.promise = new Promise(function(t, e) {
						n.onload = t, n.onerror = e, n.src = o(), !0 === n.complete && t(n)
					}))
			}
			var i = t("./log"),
				o = t("./utils").smallImage;
			e.exports = r
		}, {
			"./log": 13,
			"./utils": 26
		}],
		6: [function(t, e) {
			var s = t("./utils").smallImage;
			e.exports = function(t, e) {
				var n = document.createElement("div"),
					r = document.createElement("img"),
					i = document.createElement("span"),
					o = "Hidden Text";
				n.style.visibility = "hidden", n.style.fontFamily = t, n.style.fontSize = e, n
					.style.margin = 0, n.style.padding = 0, document.body.appendChild(n), r
					.src = s(), r.width = 1, r.height = 1, r.style.margin = 0, r.style.padding =
					0, r.style.verticalAlign = "baseline", i.style.fontFamily = t, i.style
					.fontSize = e, i.style.margin = 0, i.style.padding = 0, i.appendChild(
						document.createTextNode(o)), n.appendChild(i), n.appendChild(r), e = r
					.offsetTop - i.offsetTop + 1, n.removeChild(i), n.appendChild(document
						.createTextNode(o)), n.style.lineHeight = "normal", r.style
					.verticalAlign = "super", r = r.offsetTop - n.offsetTop + 1, document.body
					.removeChild(n), this.baseline = e, this.lineWidth = 1, this.middle = r
			}
		}, {
			"./utils": 26
		}],
		7: [function(t, e) {
			function n() {
				this.data = {}
			}
			var r = t("./font");
			n.prototype.getMetrics = function(t, e) {
				return void 0 === this.data[t + "-" + e] && (this.data[t + "-" + e] = new r(t,
					e)), this.data[t + "-" + e]
			}, e.exports = n
		}, {
			"./font": 6
		}],
		8: [function(o, t) {
			function e(e, t, n) {
				this.image = null, this.src = e;
				var r = this,
					i = s(e);
				this.promise = (t ? new Promise(function(t) {
					"about:blank" === e.contentWindow.document.URL || null == e
						.contentWindow.document.documentElement ? e.contentWindow
						.onload = e.onload = function() {
							t(e)
						} : t(e)
				}) : this.proxyLoad(n.proxy, i, n)).then(function(t) {
					return o("./core")(t.contentWindow.document.documentElement, {
						type: "view",
						width: t.width,
						height: t.height,
						proxy: n.proxy,
						javascriptEnabled: n.javascriptEnabled,
						removeContainer: n.removeContainer,
						allowTaint: n.allowTaint,
						imageTimeout: n.imageTimeout / 2
					})
				}).then(function(t) {
					return r.image = t
				})
			}
			var s = o("./utils").getBounds,
				i = o("./proxy").loadUrlDocument;
			e.prototype.proxyLoad = function(t, e, n) {
				var r = this.src;
				return i(r.src, t, r.ownerDocument, e.width, e.height, n)
			}, t.exports = e
		}, {
			"./core": 4,
			"./proxy": 16,
			"./utils": 26
		}],
		9: [function(t, e) {
			function n(t) {
				this.src = t.value, this.colorStops = [], this.type = null, this.x0 = .5, this.y0 =
					.5, this.x1 = .5, this.y1 = .5, this.promise = Promise.resolve(!0)
			}
			n.TYPES = {
					LINEAR: 1,
					RADIAL: 2
				}, n.REGEXP_COLORSTOP =
				/^\s*(rgba?\(\s*\d{1,3},\s*\d{1,3},\s*\d{1,3}(?:,\s*[0-9\.]+)?\s*\)|[a-z]{3,20}|#[a-f0-9]{3,6})(?:\s+(\d{1,3}(?:\.\d+)?)(%|px)?)?(?:\s|$)/i,
				e.exports = n
		}, {}],
		10: [function(t, e) {
			e.exports = function(n, r) {
				this.src = n, this.image = new Image;
				var i = this;
				this.tainted = null, this.promise = new Promise(function(t, e) {
					i.image.onload = t, i.image.onerror = e, r && (i.image.crossOrigin =
						"anonymous"), i.image.src = n, !0 === i.image.complete && t(
						i.image)
				})
			}
		}, {}],
		11: [function(t, e) {
			function n(t, e) {
				this.link = null, this.options = t, this.support = e, this.origin = this.getOrigin(
					window.location.href)
			}
			var o = t("./log"),
				r = t("./imagecontainer"),
				i = t("./dummyimagecontainer"),
				s = t("./proxyimagecontainer"),
				a = t("./framecontainer"),
				u = t("./svgcontainer"),
				c = t("./svgnodecontainer"),
				l = t("./lineargradientcontainer"),
				h = t("./webkitgradientcontainer"),
				f = t("./utils").bind;
			n.prototype.findImages = function(t) {
				var e = [];
				return t.reduce(function(t, e) {
					switch (e.node.nodeName) {
						case "IMG":
							return t.concat([{
								args: [e.node.src],
								method: "url"
							}]);
						case "svg":
						case "IFRAME":
							return t.concat([{
								args: [e.node],
								method: e.node.nodeName
							}])
					}
					return t
				}, []).forEach(this.addImage(e, this.loadImage), this), e
			}, n.prototype.findBackgroundImage = function(t, e) {
				return e.parseBackgroundImages().filter(this.hasImageBackground).forEach(this
					.addImage(t, this.loadImage), this), t
			}, n.prototype.addImage = function(n, r) {
				return function(e) {
					e.args.forEach(function(t) {
						this.imageExists(n, t) || (n.splice(0, 0, r.call(this, e)),
							o("Added image #" + n.length, "string" == typeof t ?
								t.substring(0, 100) : t))
					}, this)
				}
			}, n.prototype.hasImageBackground = function(t) {
				return "none" !== t.method
			}, n.prototype.loadImage = function(t) {
				if ("url" !== t.method) return "linear-gradient" === t.method ? new l(t) :
					"gradient" === t.method ? new h(t) : "svg" === t.method ? new c(t.args[
						0], this.support.svg) : "IFRAME" === t.method ? new a(t.args[0],
						this.isSameOrigin(t.args[0].src), this.options) : new i(t);
				t = t.args[0];
				return !this.isSVG(t) || this.support.svg || this.options.allowTaint ? t.match(
						/data:image\/.*;base64,/i) ? new r(t.replace(
						/url\(['"]{0,}|['"]{0,}\)$/gi, ""), !1) : this.isSameOrigin(t) || !0 ===
					this.options.allowTaint || this.isSVG(t) ? new r(t, !1) : this.support
					.cors && !this.options.allowTaint && this.options.useCORS ? new r(t, !0) :
					this.options.proxy ? new s(t, this.options.proxy) : new i(t) : new u(t)
			}, n.prototype.isSVG = function(t) {
				return "svg" === t.substring(t.length - 3).toLowerCase() || u.prototype
					.isInline(t)
			}, n.prototype.imageExists = function(t, e) {
				return t.some(function(t) {
					return t.src === e
				})
			}, n.prototype.isSameOrigin = function(t) {
				return this.getOrigin(t) === this.origin
			}, n.prototype.getOrigin = function(t) {
				var e = this.link || (this.link = document.createElement("a"));
				return e.href = t, e.href = e.href, e.protocol + e.hostname + e.port
			}, n.prototype.getPromise = function(e) {
				return this.timeout(e, this.options.imageTimeout).catch(function() {
					return new i(e.src).promise.then(function(t) {
						e.image = t
					})
				})
			}, n.prototype.get = function(e) {
				var n = null;
				return this.images.some(function(t) {
					return (n = t).src === e
				}) ? n : null
			}, n.prototype.fetch = function(t) {
				return this.images = t.reduce(f(this.findBackgroundImage, this), this
					.findImages(t)), this.images.forEach(function(e, n) {
					e.promise.then(function() {
						o("Succesfully loaded image #" + (n + 1), e)
					}, function(t) {
						o("Failed loading image #" + (n + 1), e, t)
					})
				}), this.ready = Promise.all(this.images.map(this.getPromise, this)), o(
					"Finished searching images"), this
			}, n.prototype.timeout = function(n, r) {
				var i, t = Promise.race([n.promise, new Promise(function(t, e) {
					i = setTimeout(function() {
						o("Timed out loading image", n), e(n)
					}, r)
				})]).then(function(t) {
					return clearTimeout(i), t
				});
				return t.catch(function() {
					clearTimeout(i)
				}), t
			}, e.exports = n
		}, {
			"./dummyimagecontainer": 5,
			"./framecontainer": 8,
			"./imagecontainer": 10,
			"./lineargradientcontainer": 12,
			"./log": 13,
			"./proxyimagecontainer": 17,
			"./svgcontainer": 23,
			"./svgnodecontainer": 24,
			"./utils": 26,
			"./webkitgradientcontainer": 27
		}],
		12: [function(t, e) {
			function n(t) {
				r.apply(this, arguments), this.type = r.TYPES.LINEAR;
				var e = n.REGEXP_DIRECTION.test(t.args[0]) || !r.REGEXP_COLORSTOP.test(t.args[0]);
				e ? t.args[0].split(/\s+/).reverse().forEach(function(t, e) {
						switch (t) {
							case "left":
								this.x0 = 0, this.x1 = 1;
								break;
							case "top":
								this.y0 = 0, this.y1 = 1;
								break;
							case "right":
								this.x0 = 1, this.x1 = 0;
								break;
							case "bottom":
								this.y0 = 1, this.y1 = 0;
								break;
							case "to":
								var n = this.y0,
									r = this.x0;
								this.y0 = this.y1, this.x0 = this.x1, this.x1 = r, this.y1 = n;
								break;
							case "center":
								break;
							default:
								n = .01 * parseFloat(t, 10);
								if (isNaN(n)) break;
								0 === e ? (this.y0 = n, this.y1 = 1 - this.y0) : (this.x0 = n,
									this.x1 = 1 - this.x0)
						}
					}, this) : (this.y0 = 0, this.y1 = 1), this.colorStops = t.args.slice(e ? 1 : 0)
					.map(function(t) {
						var e = t.match(r.REGEXP_COLORSTOP),
							n = +e[2],
							t = 0 == n ? "%" : e[3];
						return {
							color: new i(e[1]),
							stop: "%" === t ? n / 100 : null
						}
					}), null === this.colorStops[0].stop && (this.colorStops[0].stop = 0), null ===
					this.colorStops[this.colorStops.length - 1].stop && (this.colorStops[this
						.colorStops.length - 1].stop = 1), this.colorStops.forEach(function(n, r) {
						null === n.stop && this.colorStops.slice(r).some(function(t, e) {
							return null !== t.stop && (n.stop = (t.stop - this
									.colorStops[r - 1].stop) / (e + 1) + this
								.colorStops[r - 1].stop, !0)
						}, this)
					}, this)
			}
			var r = t("./gradientcontainer"),
				i = t("./color");
			n.prototype = Object.create(r.prototype), n.REGEXP_DIRECTION =
				/^\s*(?:to|left|right|top|bottom|center|\d{1,3}(?:\.\d+)?%?)(?:\s|$)/i, e.exports =
				n
		}, {
			"./color": 3,
			"./gradientcontainer": 9
		}],
		13: [function(t, e) {
			var n = function() {
				n.options.logging && window.console && window.console.log && Function.prototype
					.bind.call(window.console.log, window.console).apply(window.console, [Date
						.now() - n.options.start + "ms", "html2canvas:"
					].concat([].slice.call(arguments, 0)))
			};
			n.options = {
				logging: !1
			}, e.exports = n
		}, {}],
		14: [function(t, e) {
			function n(t, e) {
				this.node = t, this.parent = e, this.stack = null, this.bounds = null, this
					.borders = null, this.clip = [], this.backgroundClip = [], this.offsetBounds =
					null, this.visible = null, this.computedStyles = null, this.colors = {}, this
					.styles = {}, this.backgroundImages = null, this.transformData = null, this
					.transformMatrix = null, this.isPseudoElement = !1, this.opacity = null
			}

			function s(t) {
				return -1 !== t.toString().indexOf("%")
			}

			function r(t) {
				return t.replace("px", "")
			}

			function i(t) {
				return parseFloat(t)
			}
			var o = t("./color"),
				t = t("./utils"),
				a = t.getBounds,
				u = t.parseBackgrounds,
				c = t.offsetBounds;
			n.prototype.cloneTo = function(t) {
					t.visible = this.visible, t.borders = this.borders, t.bounds = this.bounds, t
						.clip = this.clip, t.backgroundClip = this.backgroundClip, t
						.computedStyles = this.computedStyles, t.styles = this.styles, t
						.backgroundImages = this.backgroundImages, t.opacity = this.opacity
				}, n.prototype.getOpacity = function() {
					return null === this.opacity ? this.opacity = this.cssFloat("opacity") : this
						.opacity
				}, n.prototype.assignStack = function(t) {
					(this.stack = t).children.push(this)
				}, n.prototype.isElementVisible = function() {
					return this.node.nodeType === Node.TEXT_NODE ? this.parent.visible : "none" !==
						this.css("display") && "hidden" !== this.css("visibility") && !this.node
						.hasAttribute("data-html2canvas-ignore") && ("INPUT" !== this.node
							.nodeName || "hidden" !== this.node.getAttribute("type"))
				}, n.prototype.css = function(t) {
					return this.computedStyles || (this.computedStyles = this.isPseudoElement ? this
						.parent.computedStyle(this.before ? ":before" : ":after") : this
						.computedStyle(null)), this.styles[t] || (this.styles[t] = this
						.computedStyles[t])
				}, n.prototype.prefixedCss = function(e) {
					var n = this.css(e);
					return void 0 === n && ["webkit", "moz", "ms", "o"].some(function(t) {
						return void 0 !== (n = this.css(t + e.substr(0, 1).toUpperCase() + e
							.substr(1)))
					}, this), void 0 === n ? null : n
				}, n.prototype.computedStyle = function(t) {
					return this.node.ownerDocument.defaultView.getComputedStyle(this.node, t)
				}, n.prototype.cssInt = function(t) {
					t = parseInt(this.css(t), 10);
					return isNaN(t) ? 0 : t
				}, n.prototype.color = function(t) {
					return this.colors[t] || (this.colors[t] = new o(this.css(t)))
				}, n.prototype.cssFloat = function(t) {
					t = parseFloat(this.css(t));
					return isNaN(t) ? 0 : t
				}, n.prototype.fontWeight = function() {
					var t = this.css("fontWeight");
					switch (parseInt(t, 10)) {
						case 401:
							t = "bold";
							break;
						case 400:
							t = "normal"
					}
					return t
				}, n.prototype.parseClip = function() {
					var t = this.css("clip").match(this.CLIP);
					return t ? {
						top: parseInt(t[1], 10),
						right: parseInt(t[2], 10),
						bottom: parseInt(t[3], 10),
						left: parseInt(t[4], 10)
					} : null
				}, n.prototype.parseBackgroundImages = function() {
					return this.backgroundImages || (this.backgroundImages = u(this.css(
						"backgroundImage")))
				}, n.prototype.cssList = function(t, e) {
					t = (this.css(t) || "").split(",");
					return 1 === (t = (t = t[e || 0] || t[0] || "auto").trim().split(" ")).length &&
						(t = [t[0], s(t[0]) ? "auto" : t[0]]), t
				}, n.prototype.parseBackgroundSize = function(t, e, n) {
					var r, i = this.cssList("backgroundSize", n);
					if (s(i[0])) r = t.width * parseFloat(i[0]) / 100;
					else {
						if (/contain|cover/.test(i[0])) {
							var o = t.width / t.height,
								n = e.width / e.height;
							return o < n ^ "contain" === i[0] ? {
								width: t.height * n,
								height: t.height
							} : {
								width: t.width,
								height: t.width / n
							}
						}
						r = parseInt(i[0], 10)
					}
					return t = "auto" === i[0] && "auto" === i[1] ? e.height : "auto" === i[1] ? r /
						e.width * e.height : s(i[1]) ? t.height * parseFloat(i[1]) / 100 : parseInt(
							i[1], 10), "auto" === i[0] && (r = t / e.height * e.width), {
							width: r,
							height: t
						}
				}, n.prototype.parseBackgroundPosition = function(t, e, n, r) {
					var i = this.cssList("backgroundPosition", n),
						n = s(i[0]) ? (t.width - (r || e).width) * (parseFloat(i[0]) / 100) :
						parseInt(i[0], 10),
						r = "auto" === i[1] ? n / e.width * e.height : s(i[1]) ? (t.height - (r ||
							e).height) * parseFloat(i[1]) / 100 : parseInt(i[1], 10);
					return "auto" === i[0] && (n = r / e.height * e.width), {
						left: n,
						top: r
					}
				}, n.prototype.parseBackgroundRepeat = function(t) {
					return this.cssList("backgroundRepeat", t)[0]
				}, n.prototype.parseTextShadows = function() {
					var t = this.css("textShadow"),
						e = [];
					if (t && "none" !== t)
						for (var n = t.match(this.TEXT_SHADOW_PROPERTY), r = 0; n && r < n
							.length; r++) {
							var i = n[r].match(this.TEXT_SHADOW_VALUES);
							e.push({
								color: new o(i[0]),
								offsetX: i[1] ? parseFloat(i[1].replace("px", "")) : 0,
								offsetY: i[2] ? parseFloat(i[2].replace("px", "")) : 0,
								blur: i[3] ? i[3].replace("px", "") : 0
							})
						}
					return e
				}, n.prototype.parseTransform = function() {
					var t, e;
					return this.transformData || (this.hasTransform() ? (t = this.parseBounds(), (
						e = this.prefixedCss("transformOrigin").split(" ").map(r).map(i)
						)[0] += t.left, e[1] += t.top, this.transformData = {
						origin: e,
						matrix: this.parseTransformMatrix()
					}) : this.transformData = {
						origin: [0, 0],
						matrix: [1, 0, 0, 1, 0, 0]
					}), this.transformData
				}, n.prototype.parseTransformMatrix = function() {
					var t;
					return this.transformMatrix || (t = (t = this.prefixedCss("transform")) ?
						function(t) {
							if (t && "matrix" === t[1]) return t[2].split(",").map(function(t) {
								return parseFloat(t.trim())
							});
							if (t && "matrix3d" === t[1]) {
								t = t[2].split(",").map(function(t) {
									return parseFloat(t.trim())
								});
								return [t[0], t[1], t[4], t[5], t[12], t[13]]
							}
						}(t.match(this.MATRIX_PROPERTY)) : null, this.transformMatrix = t || [1,
							0, 0, 1, 0, 0
						]), this.transformMatrix
				}, n.prototype.parseBounds = function() {
					return this.bounds || (this.bounds = (this.hasTransform() ? c : a)(this.node))
				}, n.prototype.hasTransform = function() {
					return "1,0,0,1,0,0" !== this.parseTransformMatrix().join(",") || this.parent &&
						this.parent.hasTransform()
				}, n.prototype.getValue = function() {
					var t, e = this.node.value || "";
					return "SELECT" === this.node.tagName ? e = (t = (t = this.node).options[t
							.selectedIndex || 0]) && t.text || "" : "password" === this.node.type &&
						(e = Array(e.length + 1).join("•")), 0 === e.length ? this.node
						.placeholder || "" : e
				}, n.prototype.MATRIX_PROPERTY = /(matrix|matrix3d)\((.+)\)/, n.prototype
				.TEXT_SHADOW_PROPERTY = /((rgba|rgb)\([^\)]+\)(\s-?\d+px){0,})/g, n.prototype
				.TEXT_SHADOW_VALUES = /(-?\d+px)|(#.+)|(rgb\(.+\))|(rgba\(.+\))/g, n.prototype
				.CLIP = /^rect\((\d+)px,? (\d+)px,? (\d+)px,? (\d+)px\)$/, e.exports = n
		}, {
			"./color": 3,
			"./utils": 26
		}],
		15: [function(t, e) {
			function n(t, e, n, r, i) {
				T("Starting NodeParser"), this.renderer = e, this.options = i, this.range = null,
					this.support = n, this.renderQueue = [], this.stack = new R(!0, 1, t
						.ownerDocument, null);
				var o = new I(t, null);
				i.background && e.rectangle(0, 0, e.width, e.height, new D(i.background)), t === t
					.ownerDocument.documentElement && (n = new I(o.color("backgroundColor")
						.isTransparent() ? t.ownerDocument.body : t.ownerDocument
						.documentElement, null), e.rectangle(0, 0, e.width, e.height, n.color(
						"backgroundColor"))), o.visibile = o.isElementVisible(), this
					.createPseudoHideStyles(t.ownerDocument), this.disableAnimations(t
						.ownerDocument), this.nodes = E([o].concat(this.getChildren(o)).filter(
						function(t) {
							return t.visible = t.isElementVisible()
						}).map(this.getPseudoElements, this)), this.fontMetrics = new N, T(
						"Fetched nodes, total:", this.nodes.length), T("Calculate overflow clips"),
					this.calculateOverflowClips(), T("Start fetching images"), this.images = r
					.fetch(this.nodes.filter(x)), this.ready = this.images.ready.then(M(function() {
						return T("Images loaded, starting parsing"), T(
								"Creating stacking contexts"), this
						.createStackingContexts(), T("Sorting stacking contexts"), this
							.sortStackingContexts(this.stack), this.parse(this.stack), T(
								"Render queue created with " + this.renderQueue.length +
								" items"), new Promise(M(function(t) {
								i.async ? "function" == typeof i.async ? i.async
									.call(this, this.renderQueue, t) : 0 < this
									.renderQueue.length ? (this.renderIndex = 0,
										this.asyncRenderer(this.renderQueue, t)) :
									t() : (this.renderQueue.forEach(this.paint,
										this), t())
							}, this))
					}, this))
			}

			function r(t) {
				return t.parent && t.parent.clip.length
			}

			function a() {}

			function u(s, a, u, c) {
				return s.map(function(t, e) {
					if (0 < t.width) {
						var n = a.left,
							r = a.top,
							i = a.width,
							o = a.height - s[2].width;
						switch (e) {
							case 0:
								o = s[0].width, t.args = h({
										c1: [n, r],
										c2: [n + i, r],
										c3: [n + i - s[1].width, r + o],
										c4: [n + s[3].width, r + o]
									}, c[0], c[1], u.topLeftOuter, u.topLeftInner, u
									.topRightOuter, u.topRightInner);
								break;
							case 1:
								n = a.left + a.width - s[1].width, i = s[1].width, t.args =
									h({
											c1: [n + i, r],
											c2: [n + i, r + o + s[2].width],
											c3: [n, r + o],
											c4: [n, r + s[0].width]
										}, c[1], c[2], u.topRightOuter, u.topRightInner, u
										.bottomRightOuter, u.bottomRightInner);
								break;
							case 2:
								r = r + a.height - s[2].width, o = s[2].width, t.args = h({
										c1: [n + i, r + o],
										c2: [n, r + o],
										c3: [n + s[3].width, r],
										c4: [n + i - s[3].width, r]
									}, c[2], c[3], u.bottomRightOuter, u
									.bottomRightInner, u.bottomLeftOuter, u
									.bottomLeftInner);
								break;
							case 3:
								i = s[3].width, t.args = h({
										c1: [n, r + o + s[2].width],
										c2: [n, r],
										c3: [n + i, r + s[0].width],
										c4: [n + i, r + o]
									}, c[3], c[0], u.bottomLeftOuter, u.bottomLeftInner,
									u.topLeftOuter, u.topLeftInner)
						}
					}
					return t
				})
			}

			function v(t, e, n, r) {
				var i = (Math.sqrt(2) - 1) / 3 * 4,
					o = n * i,
					i = r * i,
					n = t + n,
					r = e + r;
				return {
					topLeft: l({
						x: t,
						y: r
					}, {
						x: t,
						y: r - i
					}, {
						x: n - o,
						y: e
					}, {
						x: n,
						y: e
					}),
					topRight: l({
						x: t,
						y: e
					}, {
						x: t + o,
						y: e
					}, {
						x: n,
						y: r - i
					}, {
						x: n,
						y: r
					}),
					bottomRight: l({
						x: n,
						y: e
					}, {
						x: n,
						y: e + i
					}, {
						x: t + o,
						y: r
					}, {
						x: t,
						y: r
					}),
					bottomLeft: l({
						x: n,
						y: r
					}, {
						x: n - o,
						y: r
					}, {
						x: t,
						y: e + i
					}, {
						x: t,
						y: e
					})
				}
			}

			function c(t, e, n) {
				var r = t.left,
					i = t.top,
					o = t.width,
					s = t.height,
					a = e[0][0] < o / 2 ? e[0][0] : o / 2,
					u = e[0][1] < s / 2 ? e[0][1] : s / 2,
					c = e[1][0] < o / 2 ? e[1][0] : o / 2,
					l = e[1][1] < s / 2 ? e[1][1] : s / 2,
					h = e[2][0] < o / 2 ? e[2][0] : o / 2,
					f = e[2][1] < s / 2 ? e[2][1] : s / 2,
					p = e[3][0] < o / 2 ? e[3][0] : o / 2,
					d = e[3][1] < s / 2 ? e[3][1] : s / 2,
					g = o - c,
					m = s - f,
					t = o - h,
					e = s - d;
				return {
					topLeftOuter: v(r, i, a, u).topLeft.subdivide(.5),
					topLeftInner: v(r + n[3].width, i + n[0].width, Math.max(0, a - n[3].width),
						Math.max(0, u - n[0].width)).topLeft.subdivide(.5),
					topRightOuter: v(r + g, i, c, l).topRight.subdivide(.5),
					topRightInner: v(r + Math.min(g, o + n[3].width), i + n[0].width, g > o + n[3]
						.width ? 0 : c - n[3].width, l - n[0].width).topRight.subdivide(.5),
					bottomRightOuter: v(r + t, i + m, h, f).bottomRight.subdivide(.5),
					bottomRightInner: v(r + Math.min(t, o - n[3].width), i + Math.min(m, s + n[0]
							.width), Math.max(0, h - n[1].width), f - n[2].width).bottomRight
						.subdivide(.5),
					bottomLeftOuter: v(r, i + e, p, d).bottomLeft.subdivide(.5),
					bottomLeftInner: v(r + n[3].width, i + e, Math.max(0, p - n[3].width), d - n[2]
						.width).bottomLeft.subdivide(.5)
				}
			}

			function l(o, s, a, u) {
				function c(t, e, n) {
					return {
						x: t.x + (e.x - t.x) * n,
						y: t.y + (e.y - t.y) * n
					}
				}
				return {
					start: o,
					startControl: s,
					endControl: a,
					end: u,
					subdivide: function(t) {
						var e = c(o, s, t),
							n = c(s, a, t),
							r = c(a, u, t),
							i = c(e, n, t),
							n = c(n, r, t),
							t = c(i, n, t);
						return [l(o, e, i, t), l(t, n, r, u)]
					},
					curveTo: function(t) {
						t.push(["bezierCurve", s.x, s.y, a.x, a.y, u.x, u.y])
					},
					curveToReversed: function(t) {
						t.push(["bezierCurve", a.x, a.y, s.x, s.y, o.x, o.y])
					}
				}
			}

			function h(t, e, n, r, i, o, s) {
				var a = [];
				return 0 < e[0] || 0 < e[1] ? (a.push(["line", r[1].start.x, r[1].start.y]), r[1]
					.curveTo(a)) : a.push(["line", t.c1[0], t.c1[1]]), 0 < n[0] || 0 < n[1] ? (a
					.push(["line", o[0].start.x, o[0].start.y]), o[0].curveTo(a), a.push([
						"line", s[0].end.x, s[0].end.y
					]), s[0].curveToReversed(a)) : (a.push(["line", t.c2[0], t.c2[1]]), a.push([
					"line", t.c3[0], t.c3[1]
				])), 0 < e[0] || 0 < e[1] ? (a.push(["line", i[1].end.x, i[1].end.y]), i[1]
					.curveToReversed(a)) : a.push(["line", t.c4[0], t.c4[1]]), a
			}

			function s(t, e, n, r, i, o, s) {
				0 < e[0] || 0 < e[1] ? (t.push(["line", r[0].start.x, r[0].start.y]), r[0].curveTo(
						t), r[1].curveTo(t)) : t.push(["line", o, s]), (0 < n[0] || 0 < n[1]) && t
					.push(["line", i[0].start.x, i[0].start.y])
			}

			function f(t) {
				return t.cssInt("zIndex") < 0
			}

			function p(t) {
				return 0 < t.cssInt("zIndex")
			}

			function d(t) {
				return 0 === t.cssInt("zIndex")
			}

			function g(t) {
				return -1 !== ["inline", "inline-block", "inline-table"].indexOf(t.css("display"))
			}

			function m(t) {
				return t instanceof R
			}

			function y(t) {
				return 0 < t.node.data.trim().length
			}

			function i(t) {
				return t.nodeType === Node.TEXT_NODE || t.nodeType === Node.ELEMENT_NODE
			}

			function b(t) {
				return "static" !== t.css("position")
			}

			function w(t) {
				return "none" !== t.css("float")
			}

			function _(t) {
				var e = this;
				return function() {
					return !t.apply(e, arguments)
				}
			}

			function x(t) {
				return t.node.nodeType === Node.ELEMENT_NODE
			}

			function o(t) {
				return !0 === t.isPseudoElement
			}

			function C(t) {
				return t.node.nodeType === Node.TEXT_NODE
			}

			function k(t) {
				return parseInt(t, 10)
			}

			function S(t) {
				return t.width
			}

			function O(t) {
				return t.node.nodeType !== Node.ELEMENT_NODE || -1 === ["SCRIPT", "HEAD", "TITLE",
					"OBJECT", "BR", "OPTION"
				].indexOf(t.node.nodeName)
			}

			function E(t) {
				return [].concat.apply([], t)
			}
			var T = t("./log"),
				A = t("punycode"),
				I = t("./nodecontainer"),
				j = t("./textcontainer"),
				P = t("./pseudoelementcontainer"),
				N = t("./fontmetrics"),
				D = t("./color"),
				R = t("./stackingcontext"),
				t = t("./utils"),
				M = t.bind,
				W = t.getBounds,
				L = t.parseBackgrounds,
				F = t.offsetBounds;
			n.prototype.calculateOverflowClips = function() {
				this.nodes.forEach(function(t) {
					var e, n;
					x(t) ? (o(t) && t.appendToDOM(), t.borders = this.parseBorders(t),
							e = "hidden" === t.css("overflow") ? [t.borders.clip] : [],
							(n = t.parseClip()) && -1 !== ["absolute", "fixed"].indexOf(
								t.css("position")) && e.push([
								["rect", t.bounds.left + n.left, t.bounds.top + n
									.top, n.right - n.left, n.bottom - n.top
								]
							]), t.clip = r(t) ? t.parent.clip.concat(e) : e, t
							.backgroundClip = "hidden" !== t.css("overflow") ? t.clip
							.concat([t.borders.clip]) : t.clip, o(t) && t.cleanDOM()) :
						C(t) && (t.clip = r(t) ? t.parent.clip : []), o(t) || (t
							.bounds = null)
				}, this)
			}, n.prototype.asyncRenderer = function(t, e, n) {
				n = n || Date.now(), this.paint(t[this.renderIndex++]), t.length === this
					.renderIndex ? e() : n + 20 > Date.now() ? this.asyncRenderer(t, e, n) :
					setTimeout(M(function() {
						this.asyncRenderer(t, e)
					}, this), 0)
			}, n.prototype.createPseudoHideStyles = function(t) {
				this.createStyles(t, "." + P.prototype.PSEUDO_HIDE_ELEMENT_CLASS_BEFORE +
					':before { content: "" !important; display: none !important; }.' + P
					.prototype.PSEUDO_HIDE_ELEMENT_CLASS_AFTER +
					':after { content: "" !important; display: none !important; }')
			}, n.prototype.disableAnimations = function(t) {
				this.createStyles(t,
					"* { -webkit-animation: none !important; -moz-animation: none !important; -o-animation: none !important; animation: none !important; -webkit-transition: none !important; -moz-transition: none !important; -o-transition: none !important; transition: none !important;}"
					)
			}, n.prototype.createStyles = function(t, e) {
				var n = t.createElement("style");
				n.innerHTML = e, t.body.appendChild(n)
			}, n.prototype.getPseudoElements = function(t) {
				var e, n = [
					[t]
				];
				return t.node.nodeType === Node.ELEMENT_NODE && (e = this.getPseudoElement(t,
						":before"), t = this.getPseudoElement(t, ":after"), e && n.push(e),
					t && n.push(t)), E(n)
			}, n.prototype.getPseudoElement = function(t, e) {
				var n = t.computedStyle(e);
				if (!n || !n.content || "none" === n.content || "-moz-alt-content" === n
					.content || "none" === n.display) return null;
				for (var r, i = (r = n.content, (i = r.substr(0, 1)) === r.substr(r.length -
							1) && i.match(/'|"/) ? r.substr(1, r.length - 2) : r), r = "url" ===
						i.substr(0, 3), o = document.createElement(r ? "img" :
							"html2canvaspseudoelement"), e = new P(o, t, e), s = n.length -
						1; 0 <= s; s--) {
					var a = n.item(s).replace(/(\-[a-z])/g, function(t) {
						return t.toUpperCase().replace("-", "")
					});
					o.style[a] = n[a]
				}
				if (o.className = P.prototype.PSEUDO_HIDE_ELEMENT_CLASS_BEFORE + " " + P
					.prototype.PSEUDO_HIDE_ELEMENT_CLASS_AFTER, r) return o.src = L(i)[0].args[
					0], [e];
				var i = document.createTextNode(i);
				return o.appendChild(i), [e, new j(i, e)]
			}, n.prototype.getChildren = function(n) {
				return E([].filter.call(n.node.childNodes, i).map(function(t) {
					var e = [new(t.nodeType === Node.TEXT_NODE ? j : I)(t, n)]
						.filter(O);
					return t.nodeType === Node.ELEMENT_NODE && e.length &&
						"TEXTAREA" !== t.tagName ? e[0].isElementVisible() ? e
						.concat(this.getChildren(e[0])) : [] : e
				}, this))
			}, n.prototype.newStackingContext = function(t, e) {
				var n = new R(e, t.getOpacity(), t.node, t.parent);
				t.cloneTo(n), (e ? n.getParentStack(this) : n.parent.stack).contexts.push(n), t
					.stack = n
			}, n.prototype.createStackingContexts = function() {
				this.nodes.forEach(function(t) {
					var e, n;
					x(t) && (this.isRootElement(t) || t.getOpacity() < 1 || (n = (e = t)
								.css("position"), "auto" !== (-1 !== ["absolute",
									"relative", "fixed"
								].indexOf(n) ? e.css("zIndex") : "auto")) || this
							.isBodyWithTransparentRoot(t) || t.hasTransform()) ? this
						.newStackingContext(t, !0) : x(t) && (b(t) && d(t) || -1 !== [
							"inline-block", "inline-table"
						].indexOf(t.css("display")) || w(t)) ? this.newStackingContext(
							t, !1) : t.assignStack(t.parent.stack)
				}, this)
			}, n.prototype.isBodyWithTransparentRoot = function(t) {
				return "BODY" === t.node.nodeName && t.parent.color("backgroundColor")
					.isTransparent()
			}, n.prototype.isRootElement = function(t) {
				return null === t.parent
			}, n.prototype.sortStackingContexts = function(t) {
				var n;
				t.contexts.sort((n = t.contexts.slice(0), function(t, e) {
					return t.cssInt("zIndex") + n.indexOf(t) / n.length - (e.cssInt(
						"zIndex") + n.indexOf(e) / n.length)
				})), t.contexts.forEach(this.sortStackingContexts, this)
			}, n.prototype.parseTextBounds = function(i) {
				return function(t, e, n) {
					if ("none" !== i.parent.css("textDecoration").substr(0, 4) || 0 !== t
						.trim().length) {
						if (this.support.rangeBounds && !i.parent.hasTransform()) {
							var r = n.slice(0, e).join("").length;
							return this.getRangeBounds(i.node, r, t.length)
						}
						if (i.node && "string" == typeof i.node.data) {
							e = i.node.splitText(t.length), r = this.getWrapperBounds(i
								.node, i.parent.hasTransform());
							return i.node = e, r
						}
					} else this.support.rangeBounds && !i.parent.hasTransform() || (i.node =
						i.node.splitText(t.length));
					return {}
				}
			}, n.prototype.getWrapperBounds = function(t, e) {
				var n = t.ownerDocument.createElement("html2canvaswrapper"),
					r = t.parentNode,
					i = t.cloneNode(!0);
				n.appendChild(t.cloneNode(!0)), r.replaceChild(n, t);
				e = (e ? F : W)(n);
				return r.replaceChild(i, n), e
			}, n.prototype.getRangeBounds = function(t, e, n) {
				var r = this.range || (this.range = t.ownerDocument.createRange());
				return r.setStart(t, e), r.setEnd(t, e + n), r.getBoundingClientRect()
			}, n.prototype.parse = function(t) {
				var e = t.contexts.filter(f),
					n = t.children.filter(x),
					r = n.filter(_(w)),
					i = r.filter(_(b)).filter(_(g)),
					o = n.filter(_(b)).filter(w),
					s = r.filter(_(b)).filter(g),
					n = t.contexts.concat(r.filter(b)).filter(d),
					r = t.children.filter(C).filter(y),
					t = t.contexts.filter(p);
				e.concat(i).concat(o).concat(s).concat(n).concat(r).concat(t).forEach(function(
					t) {
					this.renderQueue.push(t), m(t) && (this.parse(t), this.renderQueue
						.push(new a))
				}, this)
			}, n.prototype.paint = function(t) {
				try {
					t instanceof a ? this.renderer.ctx.restore() : C(t) ? (o(t.parent) && t
						.parent.appendToDOM(), this.paintText(t), o(t.parent) && t.parent
						.cleanDOM()) : this.paintNode(t)
				} catch (t) {
					if (T(t), this.options.strict) throw t
				}
			}, n.prototype.paintNode = function(t) {
				m(t) && (this.renderer.setOpacity(t.opacity), this.renderer.ctx.save(), t
						.hasTransform() && this.renderer.setTransform(t.parseTransform())),
					"INPUT" === t.node.nodeName && "checkbox" === t.node.type ? this
					.paintCheckbox(t) : "INPUT" === t.node.nodeName && "radio" === t.node.type ?
					this.paintRadio(t) : this.paintElement(t)
			}, n.prototype.paintElement = function(e) {
				var n = e.parseBounds();
				this.renderer.clip(e.backgroundClip, function() {
					this.renderer.renderBackground(e, n, e.borders.borders.map(S))
				}, this), this.renderer.clip(e.clip, function() {
					this.renderer.renderBorders(e.borders.borders)
				}, this), this.renderer.clip(e.backgroundClip, function() {
					switch (e.node.nodeName) {
						case "svg":
						case "IFRAME":
							var t = this.images.get(e.node);
							t ? this.renderer.renderImage(e, n, e.borders, t) : T(
								"Error loading <" + e.node.nodeName + ">", e.node);
							break;
						case "IMG":
							t = this.images.get(e.node.src);
							t ? this.renderer.renderImage(e, n, e.borders, t) : T(
								"Error loading <img>", e.node.src);
							break;
						case "CANVAS":
							this.renderer.renderImage(e, n, e.borders, {
								image: e.node
							});
							break;
						case "SELECT":
						case "INPUT":
						case "TEXTAREA":
							this.paintFormValue(e)
					}
				}, this)
			}, n.prototype.paintCheckbox = function(t) {
				var e = t.parseBounds(),
					n = Math.min(e.width, e.height),
					r = {
						width: n - 1,
						height: n - 1,
						top: e.top,
						left: e.left
					},
					e = [3, 3],
					i = [e, e, e, e],
					o = [1, 1, 1, 1].map(function(t) {
						return {
							color: new D("#A5A5A5"),
							width: t
						}
					}),
					s = c(r, i, o);
				this.renderer.clip(t.backgroundClip, function() {
					this.renderer.rectangle(r.left + 1, r.top + 1, r.width - 2, r
						.height - 2, new D("#DEDEDE")), this.renderer.renderBorders(
						u(o, r, s, i)), t.node.checked && (this.renderer.font(new D(
							"#424242"), "normal", "normal", "bold", n - 3 +
						"px", "arial"), this.renderer.text("✔", r.left + n / 6,
						r.top + n - 1))
				}, this)
			}, n.prototype.paintRadio = function(t) {
				var e = t.parseBounds(),
					n = Math.min(e.width, e.height) - 2;
				this.renderer.clip(t.backgroundClip, function() {
					this.renderer.circleStroke(e.left + 1, e.top + 1, n, new D(
							"#DEDEDE"), 1, new D("#A5A5A5")), t.node.checked && this
						.renderer.circle(Math.ceil(e.left + n / 4) + 1, Math.ceil(e
							.top + n / 4) + 1, Math.floor(n / 2), new D("#424242"))
				}, this)
			}, n.prototype.paintFormValue = function(e) {
				var t, n, r, i = e.getValue();
				0 < i.length && (t = e.node.ownerDocument, n = t.createElement(
						"html2canvaswrapper"), ["lineHeight", "textAlign", "fontFamily",
						"fontWeight", "fontSize", "color", "paddingLeft", "paddingTop",
						"paddingRight", "paddingBottom", "width", "height",
						"borderLeftStyle", "borderTopStyle", "borderLeftWidth",
						"borderTopWidth", "boxSizing", "whiteSpace", "wordWrap"
					].forEach(function(t) {
						try {
							n.style[t] = e.css(t)
						} catch (t) {
							T("html2canvas: Parse: Exception caught in renderFormValue: " +
								t.message)
						}
					}), r = e.parseBounds(), n.style.position = "fixed", n.style.left = r
					.left + "px", n.style.top = r.top + "px", n.textContent = i, t.body
					.appendChild(n), this.paintText(new j(n.firstChild, e)), t.body
					.removeChild(n))
			}, n.prototype.paintText = function(n) {
				n.applyTextTransform();
				var t = A.ucs2.decode(n.node.data),
					r = this.options.letterRendering && !/^(normal|none|0px)$/.test(n.parent
						.css("letterSpacing")) || /[^\u0000-\u00ff]/.test(n.node.data) ? t.map(
						function(t) {
							return A.ucs2.encode([t])
						}) : function(t) {
						for (var e, n = [], r = 0, i = !1; t.length;) - 1 !== [32, 13, 10, 9,
								45].indexOf(t[r]) === i ? ((e = t.splice(0, r)).length && n
								.push(A.ucs2.encode(e)), i = !i, r = 0) : r++, r >= t.length &&
							((e = t.splice(0, r)).length && n.push(A.ucs2.encode(e)));
						return n
					}(t),
					e = n.parent.fontWeight(),
					i = n.parent.css("fontSize"),
					o = n.parent.css("fontFamily"),
					t = n.parent.parseTextShadows();
				this.renderer.font(n.parent.color("color"), n.parent.css("fontStyle"), n.parent
						.css("fontVariant"), e, i, o), t.length ? this.renderer.fontShadow(t[0]
						.color, t[0].offsetX, t[0].offsetY, t[0].blur) : this.renderer
					.clearShadow(), this.renderer.clip(n.parent.clip, function() {
						r.map(this.parseTextBounds(n), this).forEach(function(t, e) {
							t && (this.renderer.text(r[e], t.left, t.bottom), this
								.renderTextDecoration(n.parent, t, this
									.fontMetrics.getMetrics(o, i)))
						}, this)
					}, this)
			}, n.prototype.renderTextDecoration = function(t, e, n) {
				switch (t.css("textDecoration").split(" ")[0]) {
					case "underline":
						this.renderer.rectangle(e.left, Math.round(e.top + n.baseline + n
							.lineWidth), e.width, 1, t.color("color"));
						break;
					case "overline":
						this.renderer.rectangle(e.left, Math.round(e.top), e.width, 1, t.color(
							"color"));
						break;
					case "line-through":
						this.renderer.rectangle(e.left, Math.ceil(e.top + n.middle + n
							.lineWidth), e.width, 1, t.color("color"))
				}
			};
			var H = {
				inset: [
					["darken", .6],
					["darken", .1],
					["darken", .1],
					["darken", .6]
				]
			};
			n.prototype.parseBorders = function(i) {
				var e, t = i.parseBounds(),
					n = (e = i, ["TopLeft", "TopRight", "BottomRight", "BottomLeft"].map(
						function(t) {
							t = e.css("border" + t + "Radius").split(" ");
							return t.length <= 1 && (t[1] = t[0]), t.map(k)
						})),
					r = ["Top", "Right", "Bottom", "Left"].map(function(t, e) {
						var n = i.css("border" + t + "Style"),
							r = i.color("border" + t + "Color");
						"inset" === n && r.isBlack() && (r = new D([255, 255, 255, r.a]));
						e = H[n] ? H[n][e] : null;
						return {
							width: i.cssInt("border" + t + "Width"),
							color: e ? r[e[0]](e[1]) : r,
							args: null
						}
					}),
					o = c(t, n, r);
				return {
					clip: this.parseBackgroundClip(i, o, r, n, t),
					borders: u(r, t, o, n)
				}
			}, n.prototype.parseBackgroundClip = function(t, e, n, r, i) {
				var o = [];
				switch (t.css("backgroundClip")) {
					case "content-box":
					case "padding-box":
						s(o, r[0], r[1], e.topLeftInner, e.topRightInner, i.left + n[3].width, i
								.top + n[0].width), s(o, r[1], r[2], e.topRightInner, e
								.bottomRightInner, i.left + i.width - n[1].width, i.top + n[0]
								.width), s(o, r[2], r[3], e.bottomRightInner, e.bottomLeftInner,
								i.left + i.width - n[1].width, i.top + i.height - n[2].width),
							s(o, r[3], r[0], e.bottomLeftInner, e.topLeftInner, i.left + n[3]
								.width, i.top + i.height - n[2].width);
						break;
					default:
						s(o, r[0], r[1], e.topLeftOuter, e.topRightOuter, i.left, i.top), s(o,
							r[1], r[2], e.topRightOuter, e.bottomRightOuter, i.left + i
							.width, i.top), s(o, r[2], r[3], e.bottomRightOuter, e
							.bottomLeftOuter, i.left + i.width, i.top + i.height), s(o, r[
							3], r[0], e.bottomLeftOuter, e.topLeftOuter, i.left, i.top + i
							.height)
				}
				return o
			}, e.exports = n
		}, {
			"./color": 3,
			"./fontmetrics": 7,
			"./log": 13,
			"./nodecontainer": 14,
			"./pseudoelementcontainer": 18,
			"./stackingcontext": 21,
			"./textcontainer": 25,
			"./utils": 26,
			punycode: 1
		}],
		16: [function(t, e, n) {
			function a(t, e, n) {
				var r = "withCredentials" in new XMLHttpRequest;
				if (!e) return Promise.reject("No proxy configured");
				var i = s(r),
					t = u(e, t, i);
				return r ? c(t) : o(n, t, i).then(function(t) {
					return f(t.content)
				})
			}

			function o(i, o, s) {
				return new Promise(function(e, n) {
					function r() {
						delete window.html2canvas.proxy[s], i.body.removeChild(t)
					}
					var t = i.createElement("script");
					window.html2canvas.proxy[s] = function(t) {
						r(), e(t)
					}, t.src = o, t.onerror = function(t) {
						r(), n(t)
					}, i.body.appendChild(t)
				})
			}

			function s(t) {
				return t ? "" : "html2canvas_" + Date.now() + "_" + ++i + "_" + Math.round(1e5 *
					Math.random())
			}

			function u(t, e, n) {
				return t + "?url=" + encodeURIComponent(e) + (n.length ?
					"&callback=html2canvas.proxy." + n : "")
			}
			var c = t("./xhr"),
				r = t("./utils"),
				l = t("./log"),
				h = t("./clone"),
				f = r.decode64,
				i = 0;
			n.Proxy = a, n.ProxyURL = function(t, e, n) {
				var r = "crossOrigin" in new Image,
					i = s(r),
					t = u(e, t, i);
				return r ? Promise.resolve(t) : o(n, t, i).then(function(t) {
					return "data:" + t.type + ";base64," + t.content
				})
			}, n.loadUrlDocument = function(t, e, n, r, i, o) {
				return new a(t, e, window.document).then((s = t, function(e) {
					var n, t = new DOMParser;
					try {
						n = t.parseFromString(e, "text/html")
					} catch (t) {
						l("DOMParser not supported, falling back to createHTMLDocument"),
							n = document.implementation.createHTMLDocument("");
						try {
							n.open(), n.write(e), n.close()
						} catch (t) {
							l("createHTMLDocument write not supported, falling back to document.body.innerHTML"),
								n.body.innerHTML = e
						}
					}
					var r = n.querySelector("base");
					return r && r.href.host || ((r = n.createElement("base")).href =
						s, n.head.insertBefore(r, n.head.firstChild)), n
				})).then(function(t) {
					return h(t, n, r, i, o, 0, 0)
				});
				var s
			}
		}, {
			"./clone": 2,
			"./log": 13,
			"./utils": 26,
			"./xhr": 28
		}],
		17: [function(t, e) {
			var o = t("./proxy").ProxyURL;
			e.exports = function(n, r) {
				var t = document.createElement("a");
				t.href = n, n = t.href, this.src = n, this.image = new Image;
				var i = this;
				this.promise = new Promise(function(t, e) {
					i.image.crossOrigin = "Anonymous", i.image.onload = t, i.image
						.onerror = e, new o(n, r, document).then(function(t) {
							i.image.src = t
						}).catch(e)
				})
			}
		}, {
			"./proxy": 16
		}],
		18: [function(t, e) {
			function n(t, e, n) {
				r.call(this, t, e), this.isPseudoElement = !0, this.before = ":before" === n
			}
			var r = t("./nodecontainer");
			n.prototype.cloneTo = function(t) {
					n.prototype.cloneTo.call(this, t), t.isPseudoElement = !0, t.before = this
						.before
				}, (n.prototype = Object.create(r.prototype)).appendToDOM = function() {
					this.before ? this.parent.node.insertBefore(this.node, this.parent.node
							.firstChild) : this.parent.node.appendChild(this.node), this.parent.node
						.className += " " + this.getHideClass()
				}, n.prototype.cleanDOM = function() {
					this.node.parentNode.removeChild(this.node), this.parent.node.className = this
						.parent.node.className.replace(this.getHideClass(), "")
				}, n.prototype.getHideClass = function() {
					return this["PSEUDO_HIDE_ELEMENT_CLASS_" + (this.before ? "BEFORE" : "AFTER")]
				}, n.prototype.PSEUDO_HIDE_ELEMENT_CLASS_BEFORE =
				"___html2canvas___pseudoelement_before", n.prototype
				.PSEUDO_HIDE_ELEMENT_CLASS_AFTER = "___html2canvas___pseudoelement_after", e
				.exports = n
		}, {
			"./nodecontainer": 14
		}],
		19: [function(t, e) {
			function n(t, e, n, r, i) {
				this.width = t, this.height = e, this.images = n, this.options = r, this.document =
					i
			}
			var a = t("./log");
			n.prototype.renderImage = function(t, e, n, r) {
				var i = t.cssInt("paddingLeft"),
					o = t.cssInt("paddingTop"),
					s = t.cssInt("paddingRight"),
					t = t.cssInt("paddingBottom"),
					n = n.borders,
					s = e.width - (n[1].width + n[3].width + i + s),
					t = e.height - (n[0].width + n[2].width + o + t);
				this.drawImage(r, 0, 0, r.image.width || s, r.image.height || t, e.left + i + n[
					3].width, e.top + o + n[0].width, s, t)
			}, n.prototype.renderBackground = function(t, e, n) {
				0 < e.height && 0 < e.width && (this.renderBackgroundColor(t, e), this
					.renderBackgroundImage(t, e, n))
			}, n.prototype.renderBackgroundColor = function(t, e) {
				t = t.color("backgroundColor");
				t.isTransparent() || this.rectangle(e.left, e.top, e.width, e.height, t)
			}, n.prototype.renderBorders = function(t) {
				t.forEach(this.renderBorder, this)
			}, n.prototype.renderBorder = function(t) {
				t.color.isTransparent() || null === t.args || this.drawShape(t.args, t.color)
			}, n.prototype.renderBackgroundImage = function(i, o, s) {
				i.parseBackgroundImages().reverse().forEach(function(t, e, n) {
					switch (t.method) {
						case "url":
							var r = this.images.get(t.args[0]);
							r ? this.renderBackgroundRepeating(i, o, r, n.length - (e +
								1), s) : a("Error loading background-image", t.args[
								0]);
							break;
						case "linear-gradient":
						case "gradient":
							r = this.images.get(t.value);
							r ? this.renderBackgroundGradient(r, o, s) : a(
								"Error loading background-image", t.args[0]);
							break;
						case "none":
							break;
						default:
							a("Unknown background-image type", t.args[0])
					}
				}, this)
			}, n.prototype.renderBackgroundRepeating = function(t, e, n, r, i) {
				var o = t.parseBackgroundSize(e, n.image, r),
					s = t.parseBackgroundPosition(e, n.image, r, o);
				switch (t.parseBackgroundRepeat(r)) {
					case "repeat-x":
					case "repeat no-repeat":
						this.backgroundRepeatShape(n, s, o, e, e.left + i[3], e.top + s.top + i[
							0], 99999, o.height, i);
						break;
					case "repeat-y":
					case "no-repeat repeat":
						this.backgroundRepeatShape(n, s, o, e, e.left + s.left + i[3], e.top +
							i[0], o.width, 99999, i);
						break;
					case "no-repeat":
						this.backgroundRepeatShape(n, s, o, e, e.left + s.left + i[3], e.top + s
							.top + i[0], o.width, o.height, i);
						break;
					default:
						this.renderBackgroundRepeat(n, s, o, {
							top: e.top,
							left: e.left
						}, i[3], i[0])
				}
			}, e.exports = n
		}, {
			"./log": 13
		}],
		20: [function(t, e) {
			function n(t, e) {
				i.apply(this, arguments), this.canvas = this.options.canvas || this.document
					.createElement("canvas"), this.options.canvas || (this.canvas.width = t, this
						.canvas.height = e), this.ctx = this.canvas.getContext("2d"), this
					.taintCtx = this.document.createElement("canvas").getContext("2d"), this.ctx
					.textBaseline = "bottom", this.variables = {}, s(
						"Initialized CanvasRenderer with size", t, "x", e)
			}

			function r(t) {
				return 0 < t.length
			}
			var i = t("../renderer"),
				o = t("../lineargradientcontainer"),
				s = t("../log");
			(n.prototype = Object.create(i.prototype)).setFillStyle = function(t) {
				return this.ctx.fillStyle = "object" == typeof t && t.isColor ? t.toString() :
					t, this.ctx
			}, n.prototype.rectangle = function(t, e, n, r, i) {
				this.setFillStyle(i).fillRect(t, e, n, r)
			}, n.prototype.circle = function(t, e, n, r) {
				this.setFillStyle(r), this.ctx.beginPath(), this.ctx.arc(t + n / 2, e + n / 2,
					n / 2, 0, 2 * Math.PI, !0), this.ctx.closePath(), this.ctx.fill()
			}, n.prototype.circleStroke = function(t, e, n, r, i, o) {
				this.circle(t, e, n, r), this.ctx.strokeStyle = o.toString(), this.ctx.stroke()
			}, n.prototype.drawShape = function(t, e) {
				this.shape(t), this.setFillStyle(e).fill()
			}, n.prototype.taints = function(e) {
				if (null === e.tainted) {
					this.taintCtx.drawImage(e.image, 0, 0);
					try {
						this.taintCtx.getImageData(0, 0, 1, 1), e.tainted = !1
					} catch (t) {
						this.taintCtx = document.createElement("canvas").getContext("2d"), e
							.tainted = !0
					}
				}
				return e.tainted
			}, n.prototype.drawImage = function(t, e, n, r, i, o, s, a, u) {
				this.taints(t) && !this.options.allowTaint || this.ctx.drawImage(t.image, e, n,
					r, i, o, s, a, u)
			}, n.prototype.clip = function(t, e, n) {
				this.ctx.save(), t.filter(r).forEach(function(t) {
					this.shape(t).clip()
				}, this), e.call(n), this.ctx.restore()
			}, n.prototype.shape = function(t) {
				return this.ctx.beginPath(), t.forEach(function(t, e) {
					("rect" === t[0] ? this.ctx.rect : this.ctx[0 === e ? "moveTo" : t[
						0] + "To"]).apply(this.ctx, t.slice(1))
				}, this), this.ctx.closePath(), this.ctx
			}, n.prototype.font = function(t, e, n, r, i, o) {
				this.setFillStyle(t).font = [e, n, r, i, o].join(" ").split(",")[0]
			}, n.prototype.fontShadow = function(t, e, n, r) {
				this.setVariable("shadowColor", t.toString()).setVariable("shadowOffsetY", e)
					.setVariable("shadowOffsetX", n).setVariable("shadowBlur", r)
			}, n.prototype.clearShadow = function() {
				this.setVariable("shadowColor", "rgba(0,0,0,0)")
			}, n.prototype.setOpacity = function(t) {
				this.ctx.globalAlpha = t
			}, n.prototype.setTransform = function(t) {
				this.ctx.translate(t.origin[0], t.origin[1]), this.ctx.transform.apply(this.ctx,
					t.matrix), this.ctx.translate(-t.origin[0], -t.origin[1])
			}, n.prototype.setVariable = function(t, e) {
				return this.variables[t] !== e && (this.variables[t] = this.ctx[t] = e), this
			}, n.prototype.text = function(t, e, n) {
				this.ctx.fillText(t, e, n)
			}, n.prototype.backgroundRepeatShape = function(t, e, n, r, i, o, s, a, u) {
				o = [
					["line", Math.round(i), Math.round(o)],
					["line", Math.round(i + s), Math.round(o)],
					["line", Math.round(i + s), Math.round(a + o)],
					["line", Math.round(i), Math.round(a + o)]
				];
				this.clip([o], function() {
					this.renderBackgroundRepeat(t, e, n, r, u[3], u[0])
				}, this)
			}, n.prototype.renderBackgroundRepeat = function(t, e, n, r, i, o) {
				i = Math.round(r.left + e.left + i), o = Math.round(r.top + e.top + o);
				this.setFillStyle(this.ctx.createPattern(this.resizeImage(t, n), "repeat")),
					this.ctx.translate(i, o), this.ctx.fill(), this.ctx.translate(-i, -o)
			}, n.prototype.renderBackgroundGradient = function(t, e) {
				var n;
				t instanceof o && (n = this.ctx.createLinearGradient(e.left + e.width * t.x0, e
					.top + e.height * t.y0, e.left + e.width * t.x1, e.top + e.height *
					t.y1), t.colorStops.forEach(function(t) {
					n.addColorStop(t.stop, t.color.toString())
				}), this.rectangle(e.left, e.top, e.width, e.height, n))
			}, n.prototype.resizeImage = function(t, e) {
				var n = t.image;
				if (n.width === e.width && n.height === e.height) return n;
				t = document.createElement("canvas");
				return t.width = e.width, t.height = e.height, t.getContext("2d").drawImage(n,
					0, 0, n.width, n.height, 0, 0, e.width, e.height), t
			}, e.exports = n
		}, {
			"../lineargradientcontainer": 12,
			"../log": 13,
			"../renderer": 19
		}],
		21: [function(t, e) {
			function n(t, e, n, r) {
				i.call(this, n, r), this.ownStacking = t, this.contexts = [], this.children = [],
					this.opacity = (this.parent ? this.parent.stack.opacity : 1) * e
			}
			var i = t("./nodecontainer");
			(n.prototype = Object.create(i.prototype)).getParentStack = function(t) {
				var e = this.parent ? this.parent.stack : null;
				return e ? e.ownStacking ? e : e.getParentStack(t) : t.stack
			}, e.exports = n
		}, {
			"./nodecontainer": 14
		}],
		22: [function(t, e) {
			function n(t) {
				this.rangeBounds = this.testRangeBounds(t), this.cors = this.testCORS(), this.svg =
					this.testSVG()
			}
			n.prototype.testRangeBounds = function(t) {
				var e, n, r = !1;
				return t.createRange && ((e = t.createRange()).getBoundingClientRect && ((n = t
							.createElement("boundtest")).style.height = "123px", n.style
						.display = "block", t.body.appendChild(n), e.selectNode(n), 123 ===
						e.getBoundingClientRect().height && (r = !0), t.body.removeChild(n)
						)), r
			}, n.prototype.testCORS = function() {
				return void 0 !== (new Image).crossOrigin
			}, n.prototype.testSVG = function() {
				var t = new Image,
					e = document.createElement("canvas"),
					n = e.getContext("2d");
				t.src = "data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg'></svg>";
				try {
					n.drawImage(t, 0, 0), e.toDataURL()
				} catch (t) {
					return !1
				}
				return !0
			}, e.exports = n
		}, {}],
		23: [function(t, e) {
			function n(t) {
				this.src = t, this.image = null;
				var n = this;
				this.promise = this.hasFabric().then(function() {
					return n.isInline(t) ? Promise.resolve(n.inlineFormatting(t)) : r(t)
				}).then(function(e) {
					return new Promise(function(t) {
						window.html2canvas.svg.fabric.loadSVGFromString(e, n
							.createCanvas.call(n, t))
					})
				})
			}
			var r = t("./xhr"),
				i = t("./utils").decode64;
			n.prototype.hasFabric = function() {
				return window.html2canvas.svg && window.html2canvas.svg.fabric ? Promise
					.resolve() : Promise.reject(new Error(
						"html2canvas.svg.js is not loaded, cannot render svg"))
			}, n.prototype.inlineFormatting = function(t) {
				return /^data:image\/svg\+xml;base64,/.test(t) ? this.decode64(this
					.removeContentType(t)) : this.removeContentType(t)
			}, n.prototype.removeContentType = function(t) {
				return t.replace(/^data:image\/svg\+xml(;base64)?,/, "")
			}, n.prototype.isInline = function(t) {
				return /^data:image\/svg\+xml/i.test(t)
			}, n.prototype.createCanvas = function(r) {
				var i = this;
				return function(t, e) {
					var n = new window.html2canvas.svg.fabric.StaticCanvas("c");
					i.image = n.lowerCanvasEl, n.setWidth(e.width).setHeight(e.height).add(
							window.html2canvas.svg.fabric.util.groupSVGElements(t, e))
						.renderAll(), r(n.lowerCanvasEl)
				}
			}, n.prototype.decode64 = function(t) {
				return "function" == typeof window.atob ? window.atob(t) : i(t)
			}, e.exports = n
		}, {
			"./utils": 26,
			"./xhr": 28
		}],
		24: [function(t, e) {
			function n(n, t) {
				this.src = n, this.image = null;
				var r = this;
				this.promise = t ? new Promise(function(t, e) {
					r.image = new Image, r.image.onload = t, r.image.onerror = e, r.image
						.src = "data:image/svg+xml," + (new XMLSerializer)
						.serializeToString(n), !0 === r.image.complete && t(r.image)
				}) : this.hasFabric().then(function() {
					return new Promise(function(t) {
						window.html2canvas.svg.fabric.parseSVGDocument(n, r
							.createCanvas.call(r, t))
					})
				})
			}
			t = t("./svgcontainer");
			n.prototype = Object.create(t.prototype), e.exports = n
		}, {
			"./svgcontainer": 23
		}],
		25: [function(t, e) {
			function n(t, e) {
				i.call(this, t, e)
			}

			function r(t, e, n) {
				return 0 < t.length ? e + n.toUpperCase() : void 0
			}
			var i = t("./nodecontainer");
			(n.prototype = Object.create(i.prototype)).applyTextTransform = function() {
				this.node.data = this.transform(this.parent.css("textTransform"))
			}, n.prototype.transform = function(t) {
				var e = this.node.data;
				switch (t) {
					case "lowercase":
						return e.toLowerCase();
					case "capitalize":
						return e.replace(/(^|\s|:|-|\(|\))([a-z])/g, r);
					case "uppercase":
						return e.toUpperCase();
					default:
						return e
				}
			}, e.exports = n
		}, {
			"./nodecontainer": 14
		}],
		26: [function(t, e, n) {
			n.smallImage = function() {
				return ""
			}, n.bind = function(t, e) {
				return function() {
					return t.apply(e, arguments)
				}
			}, n.decode64 = function(t) {
				for (var e, n, r, i, o, s =
						"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/", a =
						t.length, u = "", c = 0; c < a; c += 4) r = s.indexOf(t[c]) << 2 | (o =
						s.indexOf(t[c + 1])) >> 4, i = (15 & o) << 4 | (e = s.indexOf(t[c +
					2])) >> 2, o = (3 & e) << 6 | (n = s.indexOf(t[c + 3])), u += 64 === e ?
					String.fromCharCode(r) : 64 === n || -1 === n ? String.fromCharCode(r, i) :
					String.fromCharCode(r, i, o);
				return u
			}, n.getBounds = function(t) {
				if (t.getBoundingClientRect) {
					var e = t.getBoundingClientRect(),
						n = null == t.offsetWidth ? e.width : t.offsetWidth;
					return {
						top: e.top,
						bottom: e.bottom || e.top + e.height,
						right: e.left + n,
						left: e.left,
						width: n,
						height: null == t.offsetHeight ? e.height : t.offsetHeight
					}
				}
				return {}
			}, n.offsetBounds = function(t) {
				var e = t.offsetParent ? n.offsetBounds(t.offsetParent) : {
					top: 0,
					left: 0
				};
				return {
					top: t.offsetTop + e.top,
					bottom: t.offsetTop + t.offsetHeight + e.top,
					right: t.offsetLeft + e.left + t.offsetWidth,
					left: t.offsetLeft + e.left,
					width: t.offsetWidth,
					height: t.offsetHeight
				}
			}, n.parseBackgrounds = function(t) {
				function e() {
					h && ('"' === n.substr(0, 1) && (n = n.substr(1, n.length - 2)), n && l
						.push(n), "-" === h.substr(0, 1) && 0 < (i = h.indexOf("-", 1) +
						1) && (r = h.substr(0, i), h = h.substr(i)), a.push({
							prefix: r,
							method: h.toLowerCase(),
							value: o,
							args: l,
							image: null
						})), l = [], h = r = n = o = ""
				}
				var n, r, i, o, s, a = [],
					u = 0,
					c = 0,
					l = [],
					h = r = n = o = "";
				return t.split("").forEach(function(t) {
					if (!(0 === u && -1 < " \r\n\t".indexOf(t))) {
						switch (t) {
							case '"':
								s ? s === t && (s = null) : s = t;
								break;
							case "(":
								if (s) break;
								if (0 === u) return u = 1, void(o += t);
								c++;
								break;
							case ")":
								if (s) break;
								if (1 === u) {
									if (0 === c) return u = 0, o += t, void e();
									c--
								}
								break;
							case ",":
								if (s) break;
								if (0 === u) return void e();
								if (1 === u && 0 === c && !h.match(/^url$/i)) return l
									.push(n), n = "", void(o += t)
						}
						o += t, 0 === u ? h += t : n += t
					}
				}), e(), a
			}
		}, {}],
		27: [function(t, e) {
			function n(t) {
				r.apply(this, arguments), this.type = "linear" === t.args[0] ? r.TYPES.LINEAR : r
					.TYPES.RADIAL
			}
			var r = t("./gradientcontainer");
			n.prototype = Object.create(r.prototype), e.exports = n
		}, {
			"./gradientcontainer": 9
		}],
		28: [function(t, e) {
			e.exports = function(r) {
				return new Promise(function(t, e) {
					var n = new XMLHttpRequest;
					n.open("GET", r), n.onload = function() {
						200 === n.status ? t(n.responseText) : e(new Error(n
							.statusText))
					}, n.onerror = function() {
						e(new Error("Network Error"))
					}, n.send()
				})
			}
		}, {}]
	}, {}, [4])(4)
}),
function(t) {
	"object" == typeof exports && "undefined" != typeof module ? module.exports = t() : "function" == typeof define &&
		define.amd ? define([], t) : ("undefined" != typeof window ? window : "undefined" != typeof global ? global :
			"undefined" != typeof self ? self : this).localforage = t()
}(function() {
	return function r(i, o, s) {
		function a(e, t) {
			if (!o[e]) {
				if (!i[e]) {
					var n = "function" == typeof require && require;
					if (!t && n) return n(e, !0);
					if (u) return u(e, !0);
					n = new Error("Cannot find module '" + e + "'");
					throw n.code = "MODULE_NOT_FOUND", n
				}
				n = o[e] = {
					exports: {}
				};
				i[e][0].call(n.exports, function(t) {
					return a(i[e][1][t] || t)
				}, n, n.exports, r, i, o, s)
			}
			return o[e].exports
		}
		for (var u = "function" == typeof require && require, t = 0; t < s.length; t++) a(s[t]);
		return a
	}({
		1: [function(t, c, e) {
			(function(e) {
				"use strict";

				function n() {
					o = !0;
					for (var t, e, n = u.length; n;) {
						for (e = u, u = [], t = -1; ++t < n;) e[t]();
						n = u.length
					}
					o = !1
				}
				var t, r, i, o, s = e.MutationObserver || e.WebKitMutationObserver,
					a = s ? (t = 0, s = new s(n), r = e.document.createTextNode(""), s.observe(
						r, {
							characterData: !0
						}), function() {
						r.data = t = ++t % 2
					}) : e.setImmediate || void 0 === e.MessageChannel ? "document" in e &&
					"onreadystatechange" in e.document.createElement("script") ? function() {
						var t = e.document.createElement("script");
						t.onreadystatechange = function() {
							n(), t.onreadystatechange = null, t.parentNode.removeChild(t),
								t = null
						}, e.document.documentElement.appendChild(t)
					} : function() {
						setTimeout(n, 0)
					} : ((i = new e.MessageChannel).port1.onmessage = n, function() {
						i.port2.postMessage(0)
					}),
					u = [];
				c.exports = function(t) {
					1 !== u.push(t) || o || a()
				}
			}).call(this, "undefined" != typeof global ? global : "undefined" != typeof self ?
				self : "undefined" != typeof window ? window : {})
		}, {}],
		2: [function(t, e, n) {
			"use strict";

			function u() {}

			function r(t) {
				if ("function" != typeof t) throw new TypeError("resolver must be a function");
				this.state = d, this.queue = [], this.outcome = void 0, t !== u && a(this, t)
			}

			function i(t, e, n) {
				this.promise = t, "function" == typeof e && (this.onFulfilled = e, this
					.callFulfilled = this.otherCallFulfilled), "function" == typeof n && (this
					.onRejected = n, this.callRejected = this.otherCallRejected)
			}

			function o(e, n, r) {
				l(function() {
					var t;
					try {
						t = n(r)
					} catch (t) {
						return h.reject(e, t)
					}
					t === e ? h.reject(e, new TypeError(
						"Cannot resolve promise with itself")) : h.resolve(e, t)
				})
			}

			function s(t) {
				var e = t && t.then;
				if (t && ("object" == typeof t || "function" == typeof t) && "function" == typeof e)
					return function() {
						e.apply(t, arguments)
					}
			}

			function a(e, t) {
				function n(t) {
					i || (i = !0, h.reject(e, t))
				}

				function r(t) {
					i || (i = !0, h.resolve(e, t))
				}
				var i = !1,
					o = c(function() {
						t(r, n)
					});
				"error" === o.status && n(o.value)
			}

			function c(t, e) {
				var n = {};
				try {
					n.value = t(e), n.status = "success"
				} catch (t) {
					n.status = "error", n.value = t
				}
				return n
			}
			var l = t(1),
				h = {},
				f = ["REJECTED"],
				p = ["FULFILLED"],
				d = ["PENDING"];
			(e.exports = r).prototype.catch = function(t) {
				return this.then(null, t)
			}, r.prototype.then = function(t, e) {
				if ("function" != typeof t && this.state === p || "function" != typeof e && this
					.state === f) return this;
				var n = new this.constructor(u);
				return this.state !== d ? o(n, this.state === p ? t : e, this.outcome) : this
					.queue.push(new i(n, t, e)), n
			}, i.prototype.callFulfilled = function(t) {
				h.resolve(this.promise, t)
			}, i.prototype.otherCallFulfilled = function(t) {
				o(this.promise, this.onFulfilled, t)
			}, i.prototype.callRejected = function(t) {
				h.reject(this.promise, t)
			}, i.prototype.otherCallRejected = function(t) {
				o(this.promise, this.onRejected, t)
			}, h.resolve = function(t, e) {
				var n = c(s, e);
				if ("error" === n.status) return h.reject(t, n.value);
				n = n.value;
				if (n) a(t, n);
				else {
					t.state = p, t.outcome = e;
					for (var r = -1, i = t.queue.length; ++r < i;) t.queue[r].callFulfilled(e)
				}
				return t
			}, h.reject = function(t, e) {
				t.state = f, t.outcome = e;
				for (var n = -1, r = t.queue.length; ++n < r;) t.queue[n].callRejected(e);
				return t
			}, r.resolve = function(t) {
				return t instanceof this ? t : h.resolve(new this(u), t)
			}, r.reject = function(t) {
				var e = new this(u);
				return h.reject(e, t)
			}, r.all = function(t) {
				var n = this;
				if ("[object Array]" !== Object.prototype.toString.call(t)) return this.reject(
					new TypeError("must be an array"));
				var r = t.length,
					i = !1;
				if (!r) return this.resolve([]);
				for (var o = new Array(r), s = 0, e = -1, a = new this(u); ++e < r;) ! function(
					t, e) {
					n.resolve(t).then(function(t) {
						o[e] = t, ++s !== r || i || (i = !0, h.resolve(a, o))
					}, function(t) {
						i || (i = !0, h.reject(a, t))
					})
				}(t[e], e);
				return a
			}, r.race = function(t) {
				var e = this;
				if ("[object Array]" !== Object.prototype.toString.call(t)) return this.reject(
					new TypeError("must be an array"));
				var n = t.length,
					r = !1;
				if (!n) return this.resolve([]);
				for (var i, o = -1, s = new this(u); ++o < n;) i = t[o], e.resolve(i).then(
					function(t) {
						r || (r = !0, h.resolve(s, t))
					},
					function(t) {
						r || (r = !0, h.reject(s, t))
					});
				return s
			}
		}, {
			1: 1
		}],
		3: [function(e, t, n) {
			(function(t) {
				"use strict";
				"function" != typeof t.Promise && (t.Promise = e(2))
			}).call(this, "undefined" != typeof global ? global : "undefined" != typeof self ?
				self : "undefined" != typeof window ? window : {})
		}, {
			2: 2
		}],
		4: [function(t, e, n) {
			"use strict";

			function o(e, n) {
				e = e || [], n = n || {};
				try {
					return new Blob(e, n)
				} catch (t) {
					if ("TypeError" !== t.name) throw t;
					for (var r = new("undefined" != typeof BlobBuilder ? BlobBuilder :
							"undefined" != typeof MSBlobBuilder ? MSBlobBuilder : "undefined" !=
							typeof MozBlobBuilder ? MozBlobBuilder : WebKitBlobBuilder), i = 0; i <
						e.length; i += 1) r.append(e[i]);
					return r.getBlob(n.type)
				}
			}

			function l(t, e) {
				e && t.then(function(t) {
					e(null, t)
				}, function(t) {
					e(t)
				})
			}

			function u(t, e, n) {
				"function" == typeof e && t.then(e), "function" == typeof n && t.catch(n)
			}

			function h(t) {
				return "string" != typeof t && (t = String(t)), t
			}

			function a() {
				if (arguments.length && "function" == typeof arguments[arguments.length - 1])
				return arguments[arguments.length - 1]
			}

			function r(t) {
				return "boolean" == typeof D ? P.resolve(D) : (r = t, new P(function(n) {
					var t = r.transaction(N, L),
						e = o([""]);
					t.objectStore(N).put(e, "key"), t.onabort = function(t) {
						t.preventDefault(), t.stopPropagation(), n(!1)
					}, t.oncomplete = function() {
						var t = navigator.userAgent.match(/Chrome\/(\d+)/),
							e = navigator.userAgent.match(/Edge\//);
						n(e || !t || 43 <= parseInt(t[1], 10))
					}
				}).catch(function() {
					return !1
				}).then(function(t) {
					return D = t
				}));
				var r
			}

			function c(t) {
				var t = R[t.name],
					n = {};
				n.promise = new P(function(t, e) {
					n.resolve = t, n.reject = e
				}), t.deferredOperations.push(n), t.dbReady ? t.dbReady = t.dbReady.then(
					function() {
						return n.promise
					}) : t.dbReady = n.promise
			}

			function f(t) {
				t = R[t.name].deferredOperations.pop();
				return t && (t.resolve(), t.promise)
			}

			function p(t, e) {
				t = R[t.name].deferredOperations.pop();
				if (t) return t.reject(e), t.promise
			}

			function i(i, o) {
				return new P(function(t, e) {
					if (R[i.name] = R[i.name] || _(), i.db) {
						if (!o) return t(i.db);
						c(i), i.db.close()
					}
					var n = [i.name];
					o && n.push(i.version);
					var r = I.open.apply(I, n);
					o && (r.onupgradeneeded = function(t) {
						var e = r.result;
						try {
							e.createObjectStore(i.storeName), t.oldVersion <= 1 && e
								.createObjectStore(N)
						} catch (e) {
							if ("ConstraintError" !== e.name) throw e
						}
					}), r.onerror = function(t) {
						t.preventDefault(), e(r.error)
					}, r.onsuccess = function() {
						t(r.result), f(i)
					}
				})
			}

			function d(t) {
				return i(t, !1)
			}

			function g(t) {
				return i(t, !0)
			}

			function m(t) {
				if (!t.db) return 1;
				var e = !t.db.objectStoreNames.contains(t.storeName),
					n = t.version < t.db.version,
					r = t.version > t.db.version;
				return n && (t.version, t.version = t.db.version), (r || e) && (!e || (e = t.db
					.version + 1) > t.version && (t.version = e), 1)
			}

			function v(t) {
				return o([function(t) {
					for (var e = t.length, n = new ArrayBuffer(e), r = new Uint8Array(
							n), i = 0; i < e; i++) r[i] = t.charCodeAt(i);
					return n
				}(atob(t.data))], {
					type: t.type
				})
			}

			function y(t) {
				return t && t.__local_forage_encoded_blob
			}

			function b(t) {
				var e = this,
					n = e._initReady().then(function() {
						var t = R[e._dbInfo.name];
						if (t && t.dbReady) return t.dbReady
					});
				return u(n, t, t), n
			}

			function w(t, e, n, r) {
				void 0 === r && (r = 1);
				try {
					var i = t.db.transaction(t.storeName, e);
					n(null, i)
				} catch (i) {
					if (0 < r && (!t.db || "InvalidStateError" === i.name || "NotFoundError" === i
							.name)) return P.resolve().then(function() {
						if (!t.db || "NotFoundError" === i.name && !t.db
							.objectStoreNames.contains(t.storeName) && t.version <= t.db
							.version) return t.db && (t.version = t.db.version + 1), g(
							t)
					}).then(function() {
						return function(n) {
							c(n);
							for (var r = R[n.name], i = r.forages, t = 0; t < i
								.length; t++) {
								var e = i[t];
								e._dbInfo.db && (e._dbInfo.db.close(), e._dbInfo
									.db = null)
							}
							return n.db = null, d(n).then(function(t) {
								return n.db = t, m(n) ? g(n) : t
							}).then(function(t) {
								n.db = r.db = t;
								for (var e = 0; e < i.length; e++) i[e]
									._dbInfo.db = t
							}).catch(function(t) {
								throw p(n, t), t
							})
						}(t).then(function() {
							w(t, e, n, r - 1)
						})
					}).catch(n);
					n(i)
				}
			}

			function _() {
				return {
					forages: [],
					db: null,
					dbReady: null,
					deferredOperations: []
				}
			}

			function s(t) {
				var e, n, r, i, o = .75 * t.length,
					s = t.length,
					a = 0;
				"=" === t[t.length - 1] && (o--, "=" === t[t.length - 2] && o--);
				for (var o = new ArrayBuffer(o), u = new Uint8Array(o), c = 0; c < s; c += 4) e = H
					.indexOf(t[c]), n = H.indexOf(t[c + 1]), r = H.indexOf(t[c + 2]), i = H.indexOf(
						t[c + 3]), u[a++] = e << 2 | n >> 4, u[a++] = (15 & n) << 4 | r >> 2, u[
					a++] = (3 & r) << 6 | 63 & i;
				return o
			}

			function x(t) {
				for (var e = new Uint8Array(t), n = "", r = 0; r < e.length; r += 3) n += H[e[r] >>
					2], n += H[(3 & e[r]) << 4 | e[r + 1] >> 4], n += H[(15 & e[r + 1]) << 2 |
					e[r + 2] >> 6], n += H[63 & e[r + 2]];
				return e.length % 3 == 2 ? n = n.substring(0, n.length - 1) + "=" : e.length % 3 ==
					1 && (n = n.substring(0, n.length - 2) + "=="), n
			}

			function C(t, e, n, r) {
				t.executeSql("CREATE TABLE IF NOT EXISTS " + e.storeName +
					" (id INTEGER PRIMARY KEY, key unique, value)", [], n, r)
			}

			function k(t, r, i, o, s, a) {
				t.executeSql(i, o, s, function(t, n) {
					n.code === n.SYNTAX_ERR ? t.executeSql(
						"SELECT name FROM sqlite_master WHERE type='table' AND name = ?",
						[name],
						function(t, e) {
							e.rows.length ? a(t, n) : C(t, r, function() {
								t.executeSql(i, o, s, a)
							}, a)
						}, a) : a(t, n)
				}, a)
			}

			function S(s, t, a, u) {
				var c = this;
				s = h(s);
				var e = new P(function(i, o) {
					c.ready().then(function() {
						void 0 === t && (t = null);
						var n = t,
							r = c._dbInfo;
						r.serializer.serialize(t, function(e, t) {
							t ? o(t) : r.db.transaction(function(t) {
								k(t, r, "INSERT OR REPLACE INTO " +
									r.storeName +
									" (key, value) VALUES (?, ?)",
									[s, e],
									function() {
										i(n)
									},
									function(t, e) {
										o(e)
									})
							}, function(t) {
								t.code === t.QUOTA_ERR && (0 < u ?
									i(S.apply(c, [s, n, a, u -
										1])) : o(t))
							})
						})
					}).catch(o)
				});
				return l(e, a), e
			}

			function O(t, e) {
				var n = t.name + "/";
				return t.storeName !== e.storeName && (n += t.storeName + "/"), n
			}

			function E() {
				return ! function() {
					var t = "_localforage_support_test";
					try {
						return localStorage.setItem(t, !0), localStorage.removeItem(t), 0
					} catch (t) {
						return 1
					}
				}() || 0 < localStorage.length
			}

			function T(t) {
				for (var e = 1; e < arguments.length; e++) {
					var n = arguments[e];
					if (n)
						for (var r in n) n.hasOwnProperty(r) && (X(n[r]) ? t[r] = n[r].slice() : t[
							r] = n[r])
				}
				return t
			}
			var A = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(
				t) {
					return typeof t
				} : function(t) {
					return t && "function" == typeof Symbol && t.constructor === Symbol && t !==
						Symbol.prototype ? "symbol" : typeof t
				},
				I = function() {
					try {
						if ("undefined" != typeof indexedDB) return indexedDB;
						if ("undefined" != typeof webkitIndexedDB) return webkitIndexedDB;
						if ("undefined" != typeof mozIndexedDB) return mozIndexedDB;
						if ("undefined" != typeof OIndexedDB) return OIndexedDB;
						if ("undefined" != typeof msIndexedDB) return msIndexedDB
					} catch (t) {
						return
					}
				}();
			"undefined" == typeof Promise && t(3);

			function j(t, e) {
				for (var n, r, i = t.length, o = 0; o < i;) {
					if ((n = t[o]) === (r = e) || "number" == typeof n && "number" == typeof r &&
						isNaN(n) && isNaN(r)) return 1;
					o++
				}
			}
			var P = Promise,
				N = "local-forage-detect-blob-support",
				D = void 0,
				R = {},
				M = Object.prototype.toString,
				W = "readonly",
				L = "readwrite",
				F = {
					_driver: "asyncStorage",
					_initStorage: function(t) {
						function e() {
							return P.resolve()
						}
						var r = this,
							i = {
								db: null
							};
						if (t)
							for (var n in t) i[n] = t[n];
						var o = R[i.name];
						o || (o = _(), R[i.name] = o), o.forages.push(r), r._initReady || (r
							._initReady = r.ready, r.ready = b);
						for (var s = [], a = 0; a < o.forages.length; a++) {
							var u = o.forages[a];
							u !== r && s.push(u._initReady().catch(e))
						}
						var c = o.forages.slice(0);
						return P.all(s).then(function() {
							return i.db = o.db, d(i)
						}).then(function(t) {
							return i.db = t, m(i, r._defaultConfig.version) ? g(i) : t
						}).then(function(t) {
							i.db = o.db = t, r._dbInfo = i;
							for (var e = 0; e < c.length; e++) {
								var n = c[e];
								n !== r && (n._dbInfo.db = i.db, n._dbInfo.version = i
									.version)
							}
						})
					},
					_support: function() {
						try {
							if (!I) return !1;
							var t = "undefined" != typeof openDatabase &&
								/(Safari|iPhone|iPad|iPod)/.test(navigator.userAgent) && !
								/Chrome/.test(navigator.userAgent) && !/BlackBerry/.test(
									navigator.platform),
								e = "function" == typeof fetch && -1 !== fetch.toString()
								.indexOf("[native code");
							return (!t || e) && "undefined" != typeof indexedDB &&
								"undefined" != typeof IDBKeyRange
						} catch (t) {
							return !1
						}
					}(),
					iterate: function(s, t) {
						var a = this,
							e = new P(function(i, o) {
								a.ready().then(function() {
									w(a._dbInfo, W, function(t, e) {
										if (t) return o(t);
										try {
											var n = e.objectStore(a._dbInfo
													.storeName)
											.openCursor(),
												r = 1;
											n.onsuccess = function() {
												var t, e = n.result;
												e ? (y(t = e.value) && (
															t = v(t)),
														void 0 !== (t =
															s(t, e.key,
																r++)) ?
														i(t) : e
														.continue()) :
													i()
											}, n.onerror = function() {
												o(n.error)
											}
										} catch (t) {
											o(t)
										}
									})
								}).catch(o)
							});
						return l(e, t), e
					},
					getItem: function(o, t) {
						var s = this;
						o = h(o);
						var e = new P(function(r, i) {
							s.ready().then(function() {
								w(s._dbInfo, W, function(t, e) {
									if (t) return i(t);
									try {
										var n = e.objectStore(s._dbInfo
											.storeName).get(o);
										n.onsuccess = function() {
											var t = n.result;
											void 0 === t && (t =
												null), y(t) && (
												t = v(t)), r(t)
										}, n.onerror = function() {
											i(n.error)
										}
									} catch (t) {
										i(t)
									}
								})
							}).catch(i)
						});
						return l(e, t), e
					},
					setItem: function(a, e, t) {
						var u = this;
						a = h(a);
						var n = new P(function(o, s) {
							var t;
							u.ready().then(function() {
								return t = u._dbInfo, "[object Blob]" === M
									.call(e) ? r(t.db).then(function(t) {
										return t ? e : (r = e, new P(
											function(e, t) {
												var n =
													new FileReader;
												n.onerror = t, n
													.onloadend =
													function(t) {
														t = btoa(t
															.target
															.result ||
															"");
														e({
															__local_forage_encoded_blob:
																!
																0,
															data: t,
															type: r
																.type
														})
													}, n
													.readAsBinaryString(
														r)
											}));
										var r
									}) : e
							}).then(function(i) {
								w(u._dbInfo, L, function(t, e) {
									if (t) return s(t);
									try {
										var n = e.objectStore(u._dbInfo
											.storeName);
										null === i && (i = void 0);
										var r = n.put(i, a);
										e.oncomplete = function() {
												void 0 === i && (i =
													null), o(i)
											}, e.onabort = e.onerror =
											function() {
												var t = r.error || r
													.transaction.error;
												s(t)
											}
									} catch (t) {
										s(t)
									}
								})
							}).catch(s)
						});
						return l(n, t), n
					},
					removeItem: function(o, t) {
						var s = this;
						o = h(o);
						var e = new P(function(r, i) {
							s.ready().then(function() {
								w(s._dbInfo, L, function(t, e) {
									if (t) return i(t);
									try {
										var n = e.objectStore(s._dbInfo
											.storeName).delete(o);
										e.oncomplete = function() {
											r()
										}, e.onerror = function() {
											i(n.error)
										}, e.onabort = function() {
											var t = n.error || n
												.transaction.error;
											i(t)
										}
									} catch (t) {
										i(t)
									}
								})
							}).catch(i)
						});
						return l(e, t), e
					},
					clear: function(t) {
						var o = this,
							e = new P(function(r, i) {
								o.ready().then(function() {
									w(o._dbInfo, L, function(t, e) {
										if (t) return i(t);
										try {
											var n = e.objectStore(o._dbInfo
												.storeName).clear();
											e.oncomplete = function() {
													r()
												}, e.onabort = e.onerror =
												function() {
													var t = n.error || n
														.transaction.error;
													i(t)
												}
										} catch (t) {
											i(t)
										}
									})
								}).catch(i)
							});
						return l(e, t), e
					},
					length: function(t) {
						var o = this,
							e = new P(function(r, i) {
								o.ready().then(function() {
									w(o._dbInfo, W, function(t, e) {
										if (t) return i(t);
										try {
											var n = e.objectStore(o._dbInfo
												.storeName).count();
											n.onsuccess = function() {
												r(n.result)
											}, n.onerror = function() {
												i(n.error)
											}
										} catch (t) {
											i(t)
										}
									})
								}).catch(i)
							});
						return l(e, t), e
					},
					key: function(a, t) {
						var u = this,
							e = new P(function(o, s) {
								a < 0 ? o(null) : u.ready().then(function() {
									w(u._dbInfo, W, function(t, e) {
										if (t) return s(t);
										try {
											var n = e.objectStore(u._dbInfo
													.storeName),
												r = !1,
												i = n.openCursor();
											i.onsuccess = function() {
												var t = i.result;
												t ? 0 === a || r ? o(t
														.key) : (r = !0,
														t.advance(a)) :
													o(null)
											}, i.onerror = function() {
												s(i.error)
											}
										} catch (t) {
											s(t)
										}
									})
								}).catch(s)
							});
						return l(e, t), e
					},
					keys: function(t) {
						var s = this,
							e = new P(function(i, o) {
								s.ready().then(function() {
									w(s._dbInfo, W, function(t, e) {
										if (t) return o(t);
										try {
											var n = e.objectStore(s._dbInfo
													.storeName)
											.openCursor(),
												r = [];
											n.onsuccess = function() {
												var t = n.result;
												t ? (r.push(t.key), t
														.continue()) :
													i(r)
											}, n.onerror = function() {
												o(n.error)
											}
										} catch (t) {
											o(t)
										}
									})
								}).catch(o)
							});
						return l(e, t), e
					},
					dropInstance: function(s, t) {
						t = a.apply(this, arguments);
						var e, n = this.config();
						return (s = "function" != typeof s && s || {}).name || (s.name = s
							.name || n.name, s.storeName = s.storeName || n.storeName), l(
							e = s.name ? (e = s.name === n.name && this._dbInfo.db ? P
								.resolve(this._dbInfo.db) : d(s).then(function(t) {
									var e = R[s.name],
										n = e.forages;
									e.db = t;
									for (var r = 0; r < n.length; r++) n[r]._dbInfo.db =
										t;
									return t
								}), s.storeName ? e.then(function(t) {
									if (t.objectStoreNames.contains(s.storeName)) {
										var i = t.version + 1;
										c(s);
										var r = R[s.name],
											o = r.forages;
										t.close();
										for (var e = 0; e < o.length; e++) {
											var n = o[e];
											n._dbInfo.db = null, n._dbInfo.version = i
										}
										return new P(function(e, n) {
											var r = I.open(s.name, i);
											r.onerror = function(t) {
												r.result.close(), n(t)
											}, r.onupgradeneeded =
											function() {
												r.result.deleteObjectStore(s
													.storeName)
											}, r.onsuccess = function() {
												var t = r.result;
												t.close(), e(t)
											}
										}).then(function(t) {
											r.db = t;
											for (var e = 0; e < o.length; e++) {
												var n = o[e];
												n._dbInfo.db = t, f(n._dbInfo)
											}
										}).catch(function(t) {
											throw (p(s, t) || P.resolve())
												.catch(function() {}), t
										})
									}
								}) : e.then(function(t) {
									c(s);
									var n = R[s.name],
										r = n.forages;
									t.close();
									for (var e = 0; e < r.length; e++) r[e]._dbInfo.db =
										null;
									return new P(function(e, n) {
										var r = I.deleteDatabase(s.name);
										r.onerror = r.onblocked = function(t) {
											var e = r.result;
											e && e.close(), n(t)
										}, r.onsuccess = function() {
											var t = r.result;
											t && t.close(), e(t)
										}
									}).then(function(t) {
										n.db = t;
										for (var e = 0; e < r.length; e++) f(r[
											e]._dbInfo)
									}).catch(function(t) {
										throw (p(s, t) || P.resolve()).catch(
											function() {}), t
									})
								})) : P.reject("Invalid arguments"), t), e
					}
				},
				H = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",
				B = /^~~local_forage_type~([^~]+)~/,
				q = "__lfsc__:",
				z = q.length,
				U = z + "arbf".length,
				G = Object.prototype.toString,
				V = {
					serialize: function(e, n) {
						var t = "";
						if (e && (t = G.call(e)), e && ("[object ArrayBuffer]" === t || e
								.buffer && "[object ArrayBuffer]" === G.call(e.buffer))) {
							var r = q;
							e instanceof ArrayBuffer ? (i = e, r += "arbf") : (i = e.buffer,
								"[object Int8Array]" === t ? r += "si08" :
								"[object Uint8Array]" === t ? r += "ui08" :
								"[object Uint8ClampedArray]" === t ? r += "uic8" :
								"[object Int16Array]" === t ? r += "si16" :
								"[object Uint16Array]" === t ? r += "ur16" :
								"[object Int32Array]" === t ? r += "si32" :
								"[object Uint32Array]" === t ? r += "ui32" :
								"[object Float32Array]" === t ? r += "fl32" :
								"[object Float64Array]" === t ? r += "fl64" : n(new Error(
									"Failed to get type for BinaryArray"))), n(r + x(i))
						} else if ("[object Blob]" === t) {
							var i = new FileReader;
							i.onload = function() {
								var t = "~~local_forage_type~" + e.type + "~" + x(this
									.result);
								n(q + "blob" + t)
							}, i.readAsArrayBuffer(e)
						} else try {
							n(JSON.stringify(e))
						} catch (t) {
							n(null, t)
						}
					},
					deserialize: function(t) {
						if (t.substring(0, z) !== q) return JSON.parse(t);
						var e, n = t.substring(U),
							r = t.substring(z, U);
						"blob" === r && B.test(n) && (e = (t = n.match(B))[1], n = n.substring(
							t[0].length));
						var i = s(n);
						switch (r) {
							case "arbf":
								return i;
							case "blob":
								return o([i], {
									type: e
								});
							case "si08":
								return new Int8Array(i);
							case "ui08":
								return new Uint8Array(i);
							case "uic8":
								return new Uint8ClampedArray(i);
							case "si16":
								return new Int16Array(i);
							case "ur16":
								return new Uint16Array(i);
							case "si32":
								return new Int32Array(i);
							case "ui32":
								return new Uint32Array(i);
							case "fl32":
								return new Float32Array(i);
							case "fl64":
								return new Float64Array(i);
							default:
								throw new Error("Unkown type: " + r)
						}
					},
					stringToBuffer: s,
					bufferToString: x
				},
				$ = {
					_driver: "webSQLStorage",
					_initStorage: function(t) {
						var r = this,
							i = {
								db: null
							};
						if (t)
							for (var e in t) i[e] = "string" != typeof t[e] ? t[e].toString() :
								t[e];
						var n = new P(function(e, n) {
							try {
								i.db = openDatabase(i.name, String(i.version), i
									.description, i.size)
							} catch (e) {
								return n(e)
							}
							i.db.transaction(function(t) {
								C(t, i, function() {
									r._dbInfo = i, e()
								}, function(t, e) {
									n(e)
								})
							}, n)
						});
						return i.serializer = V, n
					},
					_support: "function" == typeof openDatabase,
					iterate: function(c, t) {
						var e = this,
							n = new P(function(u, n) {
								e.ready().then(function() {
									var a = e._dbInfo;
									a.db.transaction(function(t) {
										k(t, a, "SELECT * FROM " + a
											.storeName, [],
											function(t, e) {
												for (var n = e.rows, r =
														n.length, i =
														0; i < r; i++) {
													var o = n.item(i),
														s = (s = o
															.value) && a
														.serializer
														.deserialize(s);
													if (void 0 !== (s =
															c(s, o.key,
																i + 1)))
														return void u(s)
												}
												u()
											},
											function(t, e) {
												n(e)
											})
									})
								}).catch(n)
							});
						return l(n, t), n
					},
					getItem: function(e, t) {
						var o = this;
						e = h(e);
						var n = new P(function(r, i) {
							o.ready().then(function() {
								var n = o._dbInfo;
								n.db.transaction(function(t) {
									k(t, n, "SELECT * FROM " + n
										.storeName +
										" WHERE key = ? LIMIT 1", [
											e],
										function(t, e) {
											e = (e = e.rows.length ?
													e.rows.item(0)
													.value : null
													) && n
												.serializer
												.deserialize(e);
											r(e)
										},
										function(t, e) {
											i(e)
										})
								})
							}).catch(i)
						});
						return l(n, t), n
					},
					setItem: function(t, e, n) {
						return S.apply(this, [t, e, n, 1])
					},
					removeItem: function(i, t) {
						var o = this;
						i = h(i);
						var e = new P(function(n, r) {
							o.ready().then(function() {
								var e = o._dbInfo;
								e.db.transaction(function(t) {
									k(t, e, "DELETE FROM " + e
										.storeName +
										" WHERE key = ?", [i],
										function() {
											n()
										},
										function(t, e) {
											r(e)
										})
								})
							}).catch(r)
						});
						return l(e, t), e
					},
					clear: function(t) {
						var i = this,
							e = new P(function(n, r) {
								i.ready().then(function() {
									var e = i._dbInfo;
									e.db.transaction(function(t) {
										k(t, e, "DELETE FROM " + e
											.storeName, [],
											function() {
												n()
											},
											function(t, e) {
												r(e)
											})
									})
								}).catch(r)
							});
						return l(e, t), e
					},
					length: function(t) {
						var i = this,
							e = new P(function(n, r) {
								i.ready().then(function() {
									var e = i._dbInfo;
									e.db.transaction(function(t) {
										k(t, e, "SELECT COUNT(key) as c FROM " +
											e.storeName, [],
											function(t, e) {
												e = e.rows.item(0).c;
												n(e)
											},
											function(t, e) {
												r(e)
											})
									})
								}).catch(r)
							});
						return l(e, t), e
					},
					key: function(i, t) {
						var o = this,
							e = new P(function(n, r) {
								o.ready().then(function() {
									var e = o._dbInfo;
									e.db.transaction(function(t) {
										k(t, e, "SELECT key FROM " + e
											.storeName +
											" WHERE id = ? LIMIT 1", [
												i + 1
											],
											function(t, e) {
												e = e.rows.length ? e
													.rows.item(0).key :
													null;
												n(e)
											},
											function(t, e) {
												r(e)
											})
									})
								}).catch(r)
							});
						return l(e, t), e
					},
					keys: function(t) {
						var r = this,
							e = new P(function(i, n) {
								r.ready().then(function() {
									var e = r._dbInfo;
									e.db.transaction(function(t) {
										k(t, e, "SELECT key FROM " + e
											.storeName, [],
											function(t, e) {
												for (var n = [], r =
													0; r < e.rows
													.length; r++) n
													.push(e.rows.item(r)
														.key);
												i(n)
											},
											function(t, e) {
												n(e)
											})
									})
								}).catch(n)
							});
						return l(e, t), e
					},
					dropInstance: function(n, t) {
						t = a.apply(this, arguments);
						var r = this.config();
						(n = "function" != typeof n && n || {}).name || (n.name = n.name || r
							.name, n.storeName = n.storeName || r.storeName);
						var i = this,
							e = n.name ? new P(function(t) {
								var o, e = n.name === r.name ? i._dbInfo.db : openDatabase(n
									.name, "", "", 0);
								t(n.storeName ? {
									db: e,
									storeNames: [n.storeName]
								} : (o = e, new P(function(i, n) {
									o.transaction(function(t) {
										t.executeSql(
											"SELECT name FROM sqlite_master WHERE type='table' AND name <> '__WebKitDatabaseInfoTable__'",
											[],
											function(t, e) {
												for (var n = [],
														r =
														0; r < e
													.rows
													.length; r++
													) n.push(e
													.rows
													.item(r)
													.name);
												i({
													db: o,
													storeNames: n
												})
											},
											function(t, e) {
												n(e)
											})
									}, function(t) {
										n(t)
									})
								})))
							}).then(function(s) {
								return new P(function(i, o) {
									s.db.transaction(function(r) {
										for (var t = [], e = 0, n = s
												.storeNames.length; e <
											n; e++) t.push(function(e) {
											return new P(function(t,
												n) {
												r.executeSql(
													"DROP TABLE IF EXISTS " +
													e,
													[],
													function() {
														t()
													},
													function(
														t,
														e
														) {
														n(e)
													})
											})
										}(s.storeNames[e]));
										P.all(t).then(function() {
											i()
										}).catch(function(t) {
											o(t)
										})
									}, function(t) {
										o(t)
									})
								})
							}) : P.reject("Invalid arguments");
						return l(e, t), e
					}
				},
				t = {
					_driver: "localStorageWrapper",
					_initStorage: function(t) {
						var e = {};
						if (t)
							for (var n in t) e[n] = t[n];
						return e.keyPrefix = O(t, this._defaultConfig), E() ? ((this._dbInfo =
							e).serializer = V, P.resolve()) : P.reject()
					},
					_support: function() {
						try {
							return "undefined" != typeof localStorage && "setItem" in
								localStorage && !!localStorage.setItem
						} catch (t) {
							return !1
						}
					}(),
					iterate: function(u, t) {
						var c = this,
							e = c.ready().then(function() {
								for (var t = c._dbInfo, e = t.keyPrefix, n = e.length, r =
										localStorage.length, i = 1, o = 0; o < r; o++) {
									var s = localStorage.key(o);
									if (0 === s.indexOf(e)) {
										var a = (a = localStorage.getItem(s)) && t
											.serializer.deserialize(a);
										if (void 0 !== (a = u(a, s.substring(n), i++)))
											return a
									}
								}
							});
						return l(e, t), e
					},
					getItem: function(n, t) {
						var r = this;
						n = h(n);
						var e = r.ready().then(function() {
							var t = r._dbInfo,
								e = localStorage.getItem(t.keyPrefix + n);
							return e = e && t.serializer.deserialize(e)
						});
						return l(e, t), e
					},
					setItem: function(s, t, e) {
						var a = this;
						s = h(s);
						var n = a.ready().then(function() {
							void 0 === t && (t = null);
							var o = t;
							return new P(function(n, r) {
								var i = a._dbInfo;
								i.serializer.serialize(t, function(t, e) {
									if (e) r(e);
									else try {
										localStorage.setItem(i
												.keyPrefix + s, t),
											n(o)
									} catch (t) {
										"QuotaExceededError" !== t
											.name &&
											"NS_ERROR_DOM_QUOTA_REACHED" !==
											t.name || r(t), r(t)
									}
								})
							})
						});
						return l(n, e), n
					},
					removeItem: function(e, t) {
						var n = this;
						e = h(e);
						var r = n.ready().then(function() {
							var t = n._dbInfo;
							localStorage.removeItem(t.keyPrefix + e)
						});
						return l(r, t), r
					},
					clear: function(t) {
						var r = this,
							e = r.ready().then(function() {
								for (var t = r._dbInfo.keyPrefix, e = localStorage.length -
										1; 0 <= e; e--) {
									var n = localStorage.key(e);
									0 === n.indexOf(t) && localStorage.removeItem(n)
								}
							});
						return l(e, t), e
					},
					length: function(t) {
						var e = this.keys().then(function(t) {
							return t.length
						});
						return l(e, t), e
					},
					key: function(n, t) {
						var r = this,
							e = r.ready().then(function() {
								var e, t = r._dbInfo;
								try {
									e = localStorage.key(n)
								} catch (t) {
									e = null
								}
								return e = e && e.substring(t.keyPrefix.length)
							});
						return l(e, t), e
					},
					keys: function(t) {
						var o = this,
							e = o.ready().then(function() {
								for (var t = o._dbInfo, e = localStorage.length, n = [], r =
										0; r < e; r++) {
									var i = localStorage.key(r);
									0 === i.indexOf(t.keyPrefix) && n.push(i.substring(t
										.keyPrefix.length))
								}
								return n
							});
						return l(e, t), e
					},
					dropInstance: function(e, t) {
						t = a.apply(this, arguments), (e = "function" != typeof e && e || {})
							.name || (r = this.config(), e.name = e.name || r.name, e
								.storeName = e.storeName || r.storeName);
						var n = this,
							r = e.name ? new P(function(t) {
								t(e.storeName ? O(e, n._defaultConfig) : e.name + "/")
							}).then(function(t) {
								for (var e = localStorage.length - 1; 0 <= e; e--) {
									var n = localStorage.key(e);
									0 === n.indexOf(t) && localStorage.removeItem(n)
								}
							}) : P.reject("Invalid arguments");
						return l(r, t), r
					}
				},
				X = Array.isArray || function(t) {
					return "[object Array]" === Object.prototype.toString.call(t)
				},
				Y = {},
				K = {},
				Q = {
					INDEXEDDB: F,
					WEBSQL: $,
					LOCALSTORAGE: t
				},
				t = [Q.INDEXEDDB._driver, Q.WEBSQL._driver, Q.LOCALSTORAGE._driver],
				J = ["dropInstance"],
				Z = ["clear", "getItem", "iterate", "key", "keys", "length", "removeItem",
					"setItem"].concat(J),
				tt = {
					description: "",
					driver: t.slice(),
					name: "localforage",
					size: 4980736,
					storeName: "keyvaluepairs",
					version: 1
				},
				t = new(et.prototype.config = function(t) {
					if ("object" !== (void 0 === t ? "undefined" : A(t))) return "string" ==
						typeof t ? this._config[t] : this._config;
					if (this._ready) return new Error(
						"Can't call config() after localforage has been used.");
					for (var e in t) {
						if ("storeName" === e && (t[e] = t[e].replace(/\W/g, "_")),
							"version" === e && "number" != typeof t[e]) return new Error(
							"Database version must be a number.");
						this._config[e] = t[e]
					}
					return !("driver" in t && t.driver) || this.setDriver(this._config.driver)
				}, et.prototype.defineDriver = function(c, t, e) {
					var n = new P(function(e, n) {
						try {
							var r = c._driver,
								t = new Error(
									"Custom driver not compliant; see https://mozilla.github.io/localForage/#definedriver"
									);
							if (!c._driver) return void n(t);
							for (var i = Z.concat("_initStorage"), o = 0, s = i
								.length; o < s; o++) {
								var a = i[o];
								if ((!j(J, a) || c[a]) && "function" != typeof c[a])
									return void n(t)
							}! function() {
								for (var t = 0, e = J.length; t < e; t++) {
									var n = J[t];
									c[n] || (c[n] = function(e) {
										return function() {
											var t = new Error("Method " +
													e +
													" is not implemented by the current driver"
													),
												t = P.reject(t);
											return l(t, arguments[arguments
												.length - 1]), t
										}
									}(n))
								}
							}();
							var u = function(t) {
								Y[r], Y[r] = c, K[r] = t, e()
							};
							"_support" in c ? c._support && "function" == typeof c
								._support ? c._support().then(u, n) : u(!!c._support) :
								u(!0)
						} catch (t) {
							n(t)
						}
					});
					return u(n, t, e), n
				}, et.prototype.driver = function() {
					return this._driver || null
				}, et.prototype.getDriver = function(t, e, n) {
					t = Y[t] ? P.resolve(Y[t]) : P.reject(new Error("Driver not found."));
					return u(t, e, n), t
				}, et.prototype.getSerializer = function(t) {
					var e = P.resolve(V);
					return u(e, t), e
				}, et.prototype.ready = function(t) {
					var e = this,
						n = e._driverSet.then(function() {
							return null === e._ready && (e._ready = e._initDriver()), e
								._ready
						});
					return u(n, t, t), n
				}, et.prototype.setDriver = function(t, e, n) {
					function o() {
						a._config.driver = a.driver()
					}

					function s(t) {
						return a._extend(t), o(), a._ready = a._initStorage(a._config), a._ready
					}

					function r(i) {
						return function() {
							var r = 0;
							return function t() {
								for (; r < i.length;) {
									var e = i[r];
									return r++, a._dbInfo = null, a._ready = null, a
										.getDriver(e).then(s).catch(t)
								}
								o();
								var n = new Error("No available storage method found.");
								return a._driverSet = P.reject(n), a._driverSet
							}()
						}
					}
					var a = this;
					X(t) || (t = [t]);
					var i = this._getSupportedDrivers(t),
						t = null !== this._driverSet ? this._driverSet.catch(function() {
							return P.resolve()
						}) : P.resolve();
					return this._driverSet = t.then(function() {
						var t = i[0];
						return a._dbInfo = null, a._ready = null, a.getDriver(t).then(
							function(t) {
								a._driver = t._driver, o(), a
									._wrapLibraryMethodsWithReady(), a._initDriver =
									r(i)
							})
					}).catch(function() {
						o();
						var t = new Error("No available storage method found.");
						return a._driverSet = P.reject(t), a._driverSet
					}), u(this._driverSet, e, n), this._driverSet
				}, et.prototype.supports = function(t) {
					return !!K[t]
				}, et.prototype._extend = function(t) {
					T(this, t)
				}, et.prototype._getSupportedDrivers = function(t) {
					for (var e = [], n = 0, r = t.length; n < r; n++) {
						var i = t[n];
						this.supports(i) && e.push(i)
					}
					return e
				}, et.prototype._wrapLibraryMethodsWithReady = function() {
					for (var t = 0, e = Z.length; t < e; t++) ! function(e, n) {
						e[n] = function() {
							var t = arguments;
							return e.ready().then(function() {
								return e[n].apply(e, t)
							})
						}
					}(this, Z[t])
				}, et.prototype.createInstance = function(t) {
					return new et(t)
				}, et);

			function et(t) {
				for (var e in ! function(t, e) {
						if (!(t instanceof e)) throw new TypeError(
							"Cannot call a class as a function")
					}(this, et), Q) {
					var n, r;
					Q.hasOwnProperty(e) && (r = (n = Q[e])._driver, this[e] = r, Y[r] || this
						.defineDriver(n))
				}
				this._defaultConfig = T({}, tt), this._config = T({}, this._defaultConfig, t), this
					._driverSet = null, this._initDriver = null, this._ready = !1, this._dbInfo =
					null, this._wrapLibraryMethodsWithReady(), this.setDriver(this._config.driver)
					.catch(function() {})
			}
			e.exports = t
		}, {
			3: 3
		}]
	}, {}, [4])(4)
}),
function() {
	function Bo(t, e) {
		return t.set(e[0], e[1]), t
	}

	function qo(t, e) {
		return t.add(e), t
	}

	function zo(t, e, n) {
		switch (n.length) {
			case 0:
				return t.call(e);
			case 1:
				return t.call(e, n[0]);
			case 2:
				return t.call(e, n[0], n[1]);
			case 3:
				return t.call(e, n[0], n[1], n[2])
		}
		return t.apply(e, n)
	}

	function Uo(t, e, n, r) {
		for (var i = -1, o = null == t ? 0 : t.length; ++i < o;) {
			var s = t[i];
			e(r, s, n(s), t)
		}
		return r
	}

	function Go(t, e) {
		for (var n = -1, r = null == t ? 0 : t.length; ++n < r && !1 !== e(t[n], n, t););
		return t
	}

	function Vo(t, e) {
		for (var n = null == t ? 0 : t.length; n-- && !1 !== e(t[n], n, t););
		return t
	}

	function $o(t, e) {
		for (var n = -1, r = null == t ? 0 : t.length; ++n < r;)
			if (!e(t[n], n, t)) return !1;
		return !0
	}

	function Xo(t, e) {
		for (var n = -1, r = null == t ? 0 : t.length, i = 0, o = []; ++n < r;) {
			var s = t[n];
			e(s, n, t) && (o[i++] = s)
		}
		return o
	}

	function Yo(t, e) {
		return !!(null == t ? 0 : t.length) && -1 < is(t, e, 0)
	}

	function Ko(t, e, n) {
		for (var r = -1, i = null == t ? 0 : t.length; ++r < i;)
			if (n(e, t[r])) return !0;
		return !1
	}

	function Qo(t, e) {
		for (var n = -1, r = null == t ? 0 : t.length, i = Array(r); ++n < r;) i[n] = e(t[n], n, t);
		return i
	}

	function Jo(t, e) {
		for (var n = -1, r = e.length, i = t.length; ++n < r;) t[i + n] = e[n];
		return t
	}

	function Zo(t, e, n, r) {
		var i = -1,
			o = null == t ? 0 : t.length;
		for (r && o && (n = t[++i]); ++i < o;) n = e(n, t[i], i, t);
		return n
	}

	function ts(t, e, n, r) {
		var i = null == t ? 0 : t.length;
		for (r && i && (n = t[--i]); i--;) n = e(n, t[i], i, t);
		return n
	}

	function es(t, e) {
		for (var n = -1, r = null == t ? 0 : t.length; ++n < r;)
			if (e(t[n], n, t)) return !0;
		return !1
	}

	function ns(t, r, e) {
		var i;
		return e(t, function(t, e, n) {
			if (r(t, e, n)) return i = e, !1
		}), i
	}

	function rs(t, e, n, r) {
		for (var i = t.length, o = n + (r ? 1 : -1); r ? o-- : ++o < i;)
			if (e(t[o], o, t)) return o;
		return -1
	}

	function is(t, e, n) {
		return e == e ? function(t, e, n) {
			for (var r = n - 1, i = t.length; ++r < i;)
				if (t[r] === e) return r;
			return -1
		}(t, e, n) : rs(t, ss, n)
	}

	function os(t, e, n, r) {
		for (var i = n - 1, o = t.length; ++i < o;)
			if (r(t[i], e)) return i;
		return -1
	}

	function ss(t) {
		return t != t
	}

	function as(t, e) {
		var n = null == t ? 0 : t.length;
		return n ? ls(t, e) / n : Is
	}

	function us(e) {
		return function(t) {
			return null == t ? Ss : t[e]
		}
	}

	function t(e) {
		return function(t) {
			return null == e ? Ss : e[t]
		}
	}

	function cs(t, r, i, o, e) {
		return e(t, function(t, e, n) {
			i = o ? (o = !1, t) : r(i, t, e, n)
		}), i
	}

	function ls(t, e) {
		for (var n, r = -1, i = t.length; ++r < i;) {
			var o = e(t[r]);
			o !== Ss && (n = n === Ss ? o : n + o)
		}
		return n
	}

	function hs(t, e) {
		for (var n = -1, r = Array(t); ++n < t;) r[n] = e(n);
		return r
	}

	function fs(e) {
		return function(t) {
			return e(t)
		}
	}

	function ps(e, t) {
		return Qo(t, function(t) {
			return e[t]
		})
	}

	function ds(t, e) {
		return t.has(e)
	}

	function gs(t, e) {
		for (var n = -1, r = t.length; ++n < r && -1 < is(e, t[n], 0););
		return n
	}

	function ms(t, e) {
		for (var n = t.length; n-- && -1 < is(e, t[n], 0););
		return n
	}

	function vs(t) {
		return "\\" + C[t]
	}

	function ys(t) {
		return x.test(t)
	}

	function bs(t) {
		var n = -1,
			r = Array(t.size);
		return t.forEach(function(t, e) {
			r[++n] = [e, t]
		}), r
	}

	function ws(e, n) {
		return function(t) {
			return e(n(t))
		}
	}

	function _s(t, e) {
		for (var n = -1, r = t.length, i = 0, o = []; ++n < r;) {
			var s = t[n];
			s !== e && s !== Ts || (t[n] = Ts, o[i++] = n)
		}
		return o
	}

	function xs(t) {
		var e = -1,
			n = Array(t.size);
		return t.forEach(function(t) {
			n[++e] = t
		}), n
	}

	function Cs(t) {
		return (ys(t) ? function(t) {
			for (var e = _.lastIndex = 0; _.test(t);) ++e;
			return e
		} : S)(t)
	}

	function ks(t) {
		return ys(t) ? t.match(_) || [] : t.split("")
	}
	var Ss, Os = "Expected a function",
		Es = "__lodash_hash_undefined__",
		Ts = "__lodash_placeholder__",
		As = 9007199254740991,
		Is = NaN,
		js = 4294967295,
		Ps = [
			["ary", 128],
			["bind", 1],
			["bindKey", 2],
			["curry", 8],
			["curryRight", 16],
			["flip", 512],
			["partial", 32],
			["partialRight", 64],
			["rearg", 256]
		],
		Ns = "[object Arguments]",
		Ds = "[object Array]",
		Rs = "[object Boolean]",
		Ms = "[object Date]",
		Ws = "[object Error]",
		Ls = "[object Function]",
		Fs = "[object GeneratorFunction]",
		Hs = "[object Map]",
		Bs = "[object Number]",
		qs = "[object Object]",
		zs = "[object Promise]",
		Us = "[object RegExp]",
		Gs = "[object Set]",
		Vs = "[object String]",
		$s = "[object Symbol]",
		Xs = "[object WeakMap]",
		Ys = "[object ArrayBuffer]",
		Ks = "[object DataView]",
		Qs = "[object Float32Array]",
		Js = "[object Float64Array]",
		Zs = "[object Int8Array]",
		ta = "[object Int16Array]",
		ea = "[object Int32Array]",
		na = "[object Uint8Array]",
		ra = "[object Uint8ClampedArray]",
		ia = "[object Uint16Array]",
		oa = "[object Uint32Array]",
		sa = /\b__p \+= '';/g,
		aa = /\b(__p \+=) '' \+/g,
		ua = /(__e\(.*?\)|\b__t\)) \+\n'';/g,
		ca = /&(?:amp|lt|gt|quot|#39);/g,
		la = /[&<>"']/g,
		ha = RegExp(ca.source),
		fa = RegExp(la.source),
		pa = /<%-([\s\S]+?)%>/g,
		da = /<%([\s\S]+?)%>/g,
		ga = /<%=([\s\S]+?)%>/g,
		ma = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,
		va = /^\w*$/,
		ya = /^\./,
		ba = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,
		wa = /[\\^$.*+?()[\]{}|]/g,
		_a = RegExp(wa.source),
		xa = /^\s+|\s+$/g,
		Ca = /^\s+/,
		ka = /\s+$/,
		Sa = /\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,
		Oa = /\{\n\/\* \[wrapped with (.+)\] \*/,
		Ea = /,? & /,
		Ta = /[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g,
		Aa = /\\(\\)?/g,
		Ia = /\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,
		ja = /\w*$/,
		Pa = /^[-+]0x[0-9a-f]+$/i,
		Na = /^0b[01]+$/i,
		Da = /^\[object .+?Constructor\]$/,
		Ra = /^0o[0-7]+$/i,
		Ma = /^(?:0|[1-9]\d*)$/,
		Wa = /[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,
		La = /($^)/,
		Fa = /['\n\r\u2028\u2029\\]/g,
		e = "\\ud800-\\udfff",
		n = "\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff",
		r = "\\u2700-\\u27bf",
		i = "a-z\\xdf-\\xf6\\xf8-\\xff",
		o = "A-Z\\xc0-\\xd6\\xd8-\\xde",
		s = "\\ufe0e\\ufe0f",
		a =
		"\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000",
		u = "[" + e + "]",
		c = "[" + a + "]",
		l = "[" + n + "]",
		h = "\\d+",
		f = "[" + r + "]",
		p = "[" + i + "]",
		d = "[^" + e + a + h + r + i + o + "]",
		g = "\\ud83c[\\udffb-\\udfff]",
		m = "[^" + e + "]",
		v = "(?:\\ud83c[\\udde6-\\uddff]){2}",
		y = "[\\ud800-\\udbff][\\udc00-\\udfff]",
		b = "[" + o + "]",
		w = "(?:" + p + "|" + d + ")",
		a = "(?:" + b + "|" + d + ")",
		r = "(?:['’](?:d|ll|m|re|s|t|ve))?",
		i = "(?:['’](?:D|LL|M|RE|S|T|VE))?",
		o = "(?:" + l + "|" + g + ")" + "?",
		d = "[" + s + "]?",
		o = d + o + ("(?:\\u200d(?:" + [m, v, y].join("|") + ")" + d + o + ")*"),
		f = "(?:" + [f, v, y].join("|") + ")" + o,
		u = "(?:" + [m + l + "?", l, v, y, u].join("|") + ")",
		Ha = RegExp("['’]", "g"),
		Ba = RegExp(l, "g"),
		_ = RegExp(g + "(?=" + g + ")|" + u + o, "g"),
		qa = RegExp([b + "?" + p + "+" + r + "(?=" + [c, b, "$"].join("|") + ")", a + "+" + i + "(?=" + [c, b + w, "$"]
			.join("|") + ")", b + "?" + w + "+" + r, b + "+" + i, "\\d*(?:(?:1ST|2ND|3RD|(?![123])\\dTH)\\b)",
			"\\d*(?:(?:1st|2nd|3rd|(?![123])\\dth)\\b)", h, f
		].join("|"), "g"),
		x = RegExp("[\\u200d" + e + n + s + "]"),
		za = /[a-z][A-Z]|[A-Z]{2,}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,
		Ua = ["Array", "Buffer", "DataView", "Date", "Error", "Float32Array", "Float64Array", "Function", "Int8Array",
			"Int16Array", "Int32Array", "Map", "Math", "Object", "Promise", "RegExp", "Set", "String", "Symbol",
			"TypeError", "Uint8Array", "Uint8ClampedArray", "Uint16Array", "Uint32Array", "WeakMap", "_",
			"clearTimeout", "isFinite", "parseInt", "setTimeout"
		],
		Ga = -1,
		Va = {};
	Va[Qs] = Va[Js] = Va[Zs] = Va[ta] = Va[ea] = Va[na] = Va[ra] = Va[ia] = Va[oa] = !0, Va[Ns] = Va[Ds] = Va[Ys] = Va[
		Rs] = Va[Ks] = Va[Ms] = Va[Ws] = Va[Ls] = Va[Hs] = Va[Bs] = Va[qs] = Va[Us] = Va[Gs] = Va[Vs] = Va[Xs] = !1;
	var $a = {};
	$a[Ns] = $a[Ds] = $a[Ys] = $a[Ks] = $a[Rs] = $a[Ms] = $a[Qs] = $a[Js] = $a[Zs] = $a[ta] = $a[ea] = $a[Hs] = $a[Bs] =
		$a[qs] = $a[Us] = $a[Gs] = $a[Vs] = $a[$s] = $a[na] = $a[ra] = $a[ia] = $a[oa] = !0, $a[Ws] = $a[Ls] = $a[
		Xs] = !1;
	var C = {
			"\\": "\\",
			"'": "'",
			"\n": "n",
			"\r": "r",
			"\u2028": "u2028",
			"\u2029": "u2029"
		},
		Xa = parseFloat,
		Ya = parseInt,
		e = "object" == typeof global && global && global.Object === Object && global,
		n = "object" == typeof self && self && self.Object === Object && self,
		Ka = e || n || Function("return this")(),
		s = "object" == typeof exports && exports && !exports.nodeType && exports,
		n = s && "object" == typeof module && module && !module.nodeType && module,
		Qa = n && n.exports === s,
		k = Qa && e.process,
		e = function() {
			try {
				return k && k.binding && k.binding("util")
			} catch (t) {}
		}(),
		Ja = e && e.isArrayBuffer,
		Za = e && e.isDate,
		tu = e && e.isMap,
		eu = e && e.isRegExp,
		nu = e && e.isSet,
		ru = e && e.isTypedArray,
		S = us("length"),
		iu = t({
			"À": "A",
			"Á": "A",
			"Â": "A",
			"Ã": "A",
			"Ä": "A",
			"Å": "A",
			"à": "a",
			"á": "a",
			"â": "a",
			"ã": "a",
			"ä": "a",
			"å": "a",
			"Ç": "C",
			"ç": "c",
			"Ð": "D",
			"ð": "d",
			"È": "E",
			"É": "E",
			"Ê": "E",
			"Ë": "E",
			"è": "e",
			"é": "e",
			"ê": "e",
			"ë": "e",
			"Ì": "I",
			"Í": "I",
			"Î": "I",
			"Ï": "I",
			"ì": "i",
			"í": "i",
			"î": "i",
			"ï": "i",
			"Ñ": "N",
			"ñ": "n",
			"Ò": "O",
			"Ó": "O",
			"Ô": "O",
			"Õ": "O",
			"Ö": "O",
			"Ø": "O",
			"ò": "o",
			"ó": "o",
			"ô": "o",
			"õ": "o",
			"ö": "o",
			"ø": "o",
			"Ù": "U",
			"Ú": "U",
			"Û": "U",
			"Ü": "U",
			"ù": "u",
			"ú": "u",
			"û": "u",
			"ü": "u",
			"Ý": "Y",
			"ý": "y",
			"ÿ": "y",
			"Æ": "Ae",
			"æ": "ae",
			"Þ": "Th",
			"þ": "th",
			"ß": "ss",
			"Ā": "A",
			"Ă": "A",
			"Ą": "A",
			"ā": "a",
			"ă": "a",
			"ą": "a",
			"Ć": "C",
			"Ĉ": "C",
			"Ċ": "C",
			"Č": "C",
			"ć": "c",
			"ĉ": "c",
			"ċ": "c",
			"č": "c",
			"Ď": "D",
			"Đ": "D",
			"ď": "d",
			"đ": "d",
			"Ē": "E",
			"Ĕ": "E",
			"Ė": "E",
			"Ę": "E",
			"Ě": "E",
			"ē": "e",
			"ĕ": "e",
			"ė": "e",
			"ę": "e",
			"ě": "e",
			"Ĝ": "G",
			"Ğ": "G",
			"Ġ": "G",
			"Ģ": "G",
			"ĝ": "g",
			"ğ": "g",
			"ġ": "g",
			"ģ": "g",
			"Ĥ": "H",
			"Ħ": "H",
			"ĥ": "h",
			"ħ": "h",
			"Ĩ": "I",
			"Ī": "I",
			"Ĭ": "I",
			"Į": "I",
			"İ": "I",
			"ĩ": "i",
			"ī": "i",
			"ĭ": "i",
			"į": "i",
			"ı": "i",
			"Ĵ": "J",
			"ĵ": "j",
			"Ķ": "K",
			"ķ": "k",
			"ĸ": "k",
			"Ĺ": "L",
			"Ļ": "L",
			"Ľ": "L",
			"Ŀ": "L",
			"Ł": "L",
			"ĺ": "l",
			"ļ": "l",
			"ľ": "l",
			"ŀ": "l",
			"ł": "l",
			"Ń": "N",
			"Ņ": "N",
			"Ň": "N",
			"Ŋ": "N",
			"ń": "n",
			"ņ": "n",
			"ň": "n",
			"ŋ": "n",
			"Ō": "O",
			"Ŏ": "O",
			"Ő": "O",
			"ō": "o",
			"ŏ": "o",
			"ő": "o",
			"Ŕ": "R",
			"Ŗ": "R",
			"Ř": "R",
			"ŕ": "r",
			"ŗ": "r",
			"ř": "r",
			"Ś": "S",
			"Ŝ": "S",
			"Ş": "S",
			"Š": "S",
			"ś": "s",
			"ŝ": "s",
			"ş": "s",
			"š": "s",
			"Ţ": "T",
			"Ť": "T",
			"Ŧ": "T",
			"ţ": "t",
			"ť": "t",
			"ŧ": "t",
			"Ũ": "U",
			"Ū": "U",
			"Ŭ": "U",
			"Ů": "U",
			"Ű": "U",
			"Ų": "U",
			"ũ": "u",
			"ū": "u",
			"ŭ": "u",
			"ů": "u",
			"ű": "u",
			"ų": "u",
			"Ŵ": "W",
			"ŵ": "w",
			"Ŷ": "Y",
			"ŷ": "y",
			"Ÿ": "Y",
			"Ź": "Z",
			"Ż": "Z",
			"Ž": "Z",
			"ź": "z",
			"ż": "z",
			"ž": "z",
			"Ĳ": "IJ",
			"ĳ": "ij",
			"Œ": "Oe",
			"œ": "oe",
			"ŉ": "'n",
			"ſ": "s"
		}),
		ou = t({
			"&": "&amp;",
			"<": "&lt;",
			">": "&gt;",
			'"': "&quot;",
			"'": "&#39;"
		}),
		su = t({
			"&amp;": "&",
			"&lt;": "<",
			"&gt;": ">",
			"&quot;": '"',
			"&#39;": "'"
		}),
		au = function t(e) {
			function d(t) {
				if (hn(t) && !io(t) && !(t instanceof m)) {
					if (t instanceof g) return t;
					if (tr.call(t, "__wrapped__")) return Me(t)
				}
				return new g(t)
			}

			function o() {}

			function g(t, e) {
				this.__wrapped__ = t, this.__actions__ = [], this.__chain__ = !!e, this.__index__ = 0, this.__values__ =
					Ss
			}

			function m(t) {
				this.__wrapped__ = t, this.__actions__ = [], this.__dir__ = 1, this.__filtered__ = !1, this
					.__iteratees__ = [], this.__takeCount__ = js, this.__views__ = []
			}

			function n(t) {
				var e = -1,
					n = null == t ? 0 : t.length;
				for (this.clear(); ++e < n;) {
					var r = t[e];
					this.set(r[0], r[1])
				}
			}

			function i(t) {
				var e = -1,
					n = null == t ? 0 : t.length;
				for (this.clear(); ++e < n;) {
					var r = t[e];
					this.set(r[0], r[1])
				}
			}

			function s(t) {
				var e = -1,
					n = null == t ? 0 : t.length;
				for (this.clear(); ++e < n;) {
					var r = t[e];
					this.set(r[0], r[1])
				}
			}

			function v(t) {
				var e = -1,
					n = null == t ? 0 : t.length;
				for (this.__data__ = new s; ++e < n;) this.add(t[e])
			}

			function y(t) {
				t = this.__data__ = new i(t);
				this.size = t.size
			}

			function r(t, e) {
				var n, r = io(t),
					i = !r && ro(t),
					o = !r && !i && so(t),
					s = !r && !i && !o && ho(t),
					a = r || i || o || s,
					u = a ? hs(t.length, $n) : [],
					c = u.length;
				for (n in t) !e && !tr.call(t, n) || a && ("length" == n || o && ("offset" == n || "parent" == n) ||
					s && ("buffer" == n || "byteLength" == n || "byteOffset" == n) || xe(n, c)) || u.push(n);
				return u
			}

			function a(t) {
				var e = t.length;
				return e ? t[ot(0, e - 1)] : Ss
			}

			function u(t, e) {
				return Ne(Mt(t), x(e, 0, t.length))
			}

			function c(t) {
				return Ne(Mt(t))
			}

			function p(t, e, n) {
				(n === Ss || nn(t[e], n)) && (n !== Ss || e in t) || f(t, e, n)
			}

			function b(t, e, n) {
				var r = t[e];
				tr.call(t, e) && nn(r, n) && (n !== Ss || e in t) || f(t, e, n)
			}

			function l(t, e) {
				for (var n = t.length; n--;)
					if (nn(t[n][0], e)) return n;
				return -1
			}

			function h(t, r, i, o) {
				return Zr(t, function(t, e, n) {
					r(o, t, i(t), n)
				}), o
			}

			function w(t, e) {
				return t && Wt(e, Sn(e), t)
			}

			function f(t, e, n) {
				"__proto__" == e && yr ? yr(t, e, {
					configurable: !0,
					enumerable: !0,
					value: n,
					writable: !0
				}) : t[e] = n
			}

			function _(t, e) {
				for (var n = -1, r = e.length, i = Hn(r), o = null == t; ++n < r;) i[n] = o ? Ss : Cn(t, e[n]);
				return i
			}

			function x(t, e, n) {
				return t == t && (n !== Ss && (t = t <= n ? t : n), e !== Ss && (t = e <= t ? t : e)), t
			}

			function C(n, r, i, t, e, o) {
				var s, a = 1 & r,
					u = 2 & r,
					c = 4 & r;
				if (i && (s = e ? i(n, t, e, o) : i(n)), s !== Ss) return s;
				if (!ln(n)) return n;
				var l, h, f = io(n);
				if (f) {
					if (t = (p = n).length, d = p.constructor(t), t && "string" == typeof p[0] && tr.call(p, "index") &&
						(d.index = p.index, d.input = p.input), s = d, !a) return Mt(n, s)
				} else {
					var p = hi(n),
						d = p == Ls || p == Fs;
					if (so(n)) return It(n, a);
					if (p == qs || p == Ns || d && !e) {
						if (s = u || d ? {} : we(n), !a) return u ? (d = l = n, h = (h = s) && Wt(d, On(d), h), Wt(l,
							li(l), h)) : (h = w(s, l = n), Wt(l, ci(l), h))
					} else {
						if (!$a[p]) return e ? n : {};
						s = function(t, e, n, r) {
							var i = t.constructor;
							switch (e) {
								case Ys:
									return jt(t);
								case Rs:
								case Ms:
									return new i(+t);
								case Ks:
									return function(t, e) {
										e = e ? jt(t.buffer) : t.buffer;
										return new t.constructor(e, t.byteOffset, t.byteLength)
									}(t, r);
								case Qs:
								case Js:
								case Zs:
								case ta:
								case ea:
								case na:
								case ra:
								case ia:
								case oa:
									return Pt(t, r);
								case Hs:
									return function(t, e, n) {
										return Zo(e ? n(bs(t), 1) : bs(t), Bo, new t.constructor)
									}(t, r, n);
								case Bs:
								case Vs:
									return new i(t);
								case Us:
									return function(t) {
										var e = new t.constructor(t.source, ja.exec(t));
										return e.lastIndex = t.lastIndex, e
									}(t);
								case Gs:
									return function(t, e, n) {
										return Zo(e ? n(xs(t), 1) : xs(t), qo, new t.constructor)
									}(t, r, n);
								case $s:
									return function(t) {
										return Yr ? Gn(Yr.call(t)) : {}
									}(t)
							}
						}(n, p, C, a)
					}
				}
				a = (o = o || new y).get(n);
				if (a) return a;
				o.set(n, s);
				var g = f ? Ss : (c ? u ? fe : he : u ? On : Sn)(n);
				return Go(g || n, function(t, e) {
					g && (t = n[e = t]), b(s, e, C(t, r, i, e, n, o))
				}), s
			}

			function k(t, e, n) {
				var r = n.length;
				if (null == t) return !r;
				for (t = Gn(t); r--;) {
					var i = n[r],
						o = e[i],
						s = t[i];
					if (s === Ss && !(i in t) || !o(s)) return !1
				}
				return !0
			}

			function S(t, e, n) {
				if ("function" != typeof t) throw new Xn(Os);
				return mi(function() {
					t.apply(Ss, n)
				}, e)
			}

			function O(t, e, n, r) {
				var i = -1,
					o = Yo,
					s = !0,
					a = t.length,
					u = [],
					c = e.length;
				if (!a) return u;
				n && (e = Qo(e, fs(n))), r ? (o = Ko, s = !1) : 200 <= e.length && (o = ds, s = !1, e = new v(e));
				t: for (; ++i < a;) {
					var l = t[i],
						h = null == n ? l : n(l),
						l = r || 0 !== l ? l : 0;
					if (s && h == h) {
						for (var f = c; f--;)
							if (e[f] === h) continue t;
						u.push(l)
					} else o(e, h, r) || u.push(l)
				}
				return u
			}

			function E(t, r) {
				var i = !0;
				return Zr(t, function(t, e, n) {
					return i = !!r(t, e, n)
				}), i
			}

			function T(t, e, n) {
				for (var r = -1, i = t.length; ++r < i;) {
					var o, s, a = t[r],
						u = e(a);
					null != u && (o === Ss ? u == u && !gn(u) : n(u, o)) && (o = u, s = a)
				}
				return s
			}

			function A(t, r) {
				var i = [];
				return Zr(t, function(t, e, n) {
					r(t, e, n) && i.push(t)
				}), i
			}

			function I(t, e, n, r, i) {
				var o = -1,
					s = t.length;
				for (n = n || _e, i = i || []; ++o < s;) {
					var a = t[o];
					0 < e && n(a) ? 1 < e ? I(a, e - 1, n, r, i) : Jo(i, a) : r || (i[i.length] = a)
				}
				return i
			}

			function j(t, e) {
				return t && ei(t, e, Sn)
			}

			function P(t, e) {
				return t && ni(t, e, Sn)
			}

			function N(e, t) {
				return Xo(t, function(t) {
					return an(e[t])
				})
			}

			function D(t, e) {
				for (var n = 0, r = (e = Tt(e, t)).length; null != t && n < r;) t = t[De(e[n++])];
				return n && n == r ? t : Ss
			}

			function R(t, e, n) {
				e = e(t);
				return io(t) ? e : Jo(e, n(t))
			}

			function M(t) {
				return null == t ? t === Ss ? "[object Undefined]" : "[object Null]" : vr && vr in Gn(t) ? function(t) {
					var e = tr.call(t, vr),
						n = t[vr];
					try {
						t[vr] = Ss;
						var r = !0
					} catch (t) {}
					var i = rr.call(t);
					return r && (e ? t[vr] = n : delete t[vr]), i
				}(t) : (t = t, rr.call(t))
			}

			function W(t, e) {
				return e < t
			}

			function L(t, e) {
				return null != t && tr.call(t, e)
			}

			function F(t, e) {
				return null != t && e in Gn(t)
			}

			function H(t, e, n) {
				for (var r = n ? Ko : Yo, i = t[0].length, o = t.length, s = o, a = Hn(o), u = 1 / 0, c = []; s--;) {
					var l = t[s];
					s && e && (l = Qo(l, fs(e))), u = Ir(l.length, u), a[s] = !n && (e || 120 <= i && 120 <= l.length) ?
						new v(s && l) : Ss
				}
				l = t[0];
				var h = -1,
					f = a[0];
				t: for (; ++h < i && c.length < u;) {
					var p = l[h],
						d = e ? e(p) : p,
						p = n || 0 !== p ? p : 0;
					if (!(f ? ds(f, d) : r(c, d, n))) {
						for (s = o; --s;) {
							var g = a[s];
							if (!(g ? ds(g, d) : r(t[s], d, n))) continue t
						}
						f && f.push(d), c.push(p)
					}
				}
				return c
			}

			function B(t, e, n) {
				e = null == (t = Ie(t, e = Tt(e, t))) ? t : t[De(Be(e))];
				return null == e ? Ss : zo(e, t, n)
			}

			function q(t) {
				return hn(t) && M(t) == Ns
			}

			function z(t, e, n, r, i) {
				return t === e || (null == t || null == e || !hn(t) && !hn(e) ? t != t && e != e : function(t, e, n, r,
					i, o) {
					var s = io(t),
						a = io(e),
						u = s ? Ds : hi(t),
						c = a ? Ds : hi(e),
						l = (u = u == Ns ? qs : u) == qs,
						a = (c = c == Ns ? qs : c) == qs,
						c = u == c;
					if (c && so(t)) {
						if (!so(e)) return !1;
						l = !(s = !0)
					}
					if (c && !l) return o = o || new y, s || ho(t) ? ce(t, e, n, r, i, o) : function(t, e, n, r,
						i, o, s) {
						switch (n) {
							case Ks:
								if (t.byteLength != e.byteLength || t.byteOffset != e.byteOffset)
								return !1;
								t = t.buffer, e = e.buffer;
							case Ys:
								return !(t.byteLength != e.byteLength || !o(new cr(t), new cr(e)));
							case Rs:
							case Ms:
							case Bs:
								return nn(+t, +e);
							case Ws:
								return t.name == e.name && t.message == e.message;
							case Us:
							case Vs:
								return t == e + "";
							case Hs:
								var a = bs;
							case Gs:
								var u = 1 & r;
								if (a = a || xs, t.size != e.size && !u) return !1;
								u = s.get(t);
								if (u) return u == e;
								r |= 2, s.set(t, e);
								a = ce(a(t), a(e), r, i, o, s);
								return s.delete(t), a;
							case $s:
								if (Yr) return Yr.call(t) == Yr.call(e)
						}
						return !1
					}(t, e, u, n, r, i, o);
					if (!(1 & n)) {
						l = l && tr.call(t, "__wrapped__"), a = a && tr.call(e, "__wrapped__");
						if (l || a) {
							l = l ? t.value() : t, a = a ? e.value() : e;
							return o = o || new y, i(l, a, n, r, o)
						}
					}
					return !!c && (o = o || new y, function(t, e, n, r, i, o) {
						var s = 1 & n,
							a = he(t),
							u = a.length,
							c = he(e).length;
						if (u != c && !s) return !1;
						for (var l = u; l--;) {
							var h = a[l];
							if (!(s ? h in e : tr.call(e, h))) return !1
						}
						var f = o.get(t);
						if (f && o.get(e)) return f == e;
						var p = !0;
						o.set(t, e), o.set(e, t);
						for (var d = s; ++l < u;) {
							h = a[l];
							var g, m = t[h],
								v = e[h];
							if (r && (g = s ? r(v, m, h, e, t, o) : r(m, v, h, t, e, o)), !(g === Ss ?
									m === v || i(m, v, n, r, o) : g)) {
								p = !1;
								break
							}
							d = d || "constructor" == h
						}
						p && !d && (c = t.constructor, f = e.constructor, c != f && "constructor" in
							t && "constructor" in e && !("function" == typeof c && c instanceof c &&
								"function" == typeof f && f instanceof f) && (p = !1));
						return o.delete(t), o.delete(e), p
					}(t, e, n, r, i, o))
				}(t, e, n, r, z, i))
			}

			function U(t, e, n, r) {
				var i = n.length,
					o = i,
					s = !r;
				if (null == t) return !o;
				for (t = Gn(t); i--;) {
					var a = n[i];
					if (s && a[2] ? a[1] !== t[a[0]] : !(a[0] in t)) return !1
				}
				for (; ++i < o;) {
					var u = (a = n[i])[0],
						c = t[u],
						l = a[1];
					if (s && a[2]) {
						if (c === Ss && !(u in t)) return !1
					} else {
						var h, f = new y;
						if (r && (h = r(c, l, u, t, e, f)), !(h === Ss ? z(l, c, 3, r, f) : h)) return !1
					}
				}
				return !0
			}

			function G(t) {
				return !(!ln(t) || (e = t, nr && nr in e)) && (an(t) ? sr : Da).test(Re(t));
				var e
			}

			function V(t) {
				return "function" == typeof t ? t : null == t ? Nn : "object" == typeof t ? io(t) ? J(t[0], t[1]) : Q(
					t) : Wn(t)
			}

			function $(t) {
				if (!Oe(t)) return Tr(t);
				var e, n = [];
				for (e in Gn(t)) tr.call(t, e) && "constructor" != e && n.push(e);
				return n
			}

			function X(t) {
				if (!ln(t)) return function(t) {
					var e = [];
					if (null != t)
						for (var n in Gn(t)) e.push(n);
					return e
				}(t);
				var e, n = Oe(t),
					r = [];
				for (e in t)("constructor" != e || !n && tr.call(t, e)) && r.push(e);
				return r
			}

			function Y(t, e) {
				return t < e
			}

			function K(t, r) {
				var i = -1,
					o = rn(t) ? Hn(t.length) : [];
				return Zr(t, function(t, e, n) {
					o[++i] = r(t, e, n)
				}), o
			}

			function Q(e) {
				var n = ve(e);
				return 1 == n.length && n[0][2] ? Te(n[0][0], n[0][1]) : function(t) {
					return t === e || U(t, e, n)
				}
			}

			function J(n, r) {
				return ke(n) && Ee(r) ? Te(De(n), r) : function(t) {
					var e = Cn(t, n);
					return e === Ss && e === r ? kn(t, n) : z(r, e, 3)
				}
			}

			function Z(r, i, o, s, a) {
				r !== i && ei(i, function(t, e) {
					var n;
					ln(t) ? (a = a || new y, function(t, e, n, r, i, o, s) {
						var a = t[n],
							u = e[n],
							c = s.get(u);
						if (c) return p(t, n, c);
						var l = o ? o(a, u, n + "", t, e, s) : Ss,
							h = l === Ss; {
							var f;
							h && (f = io(u), c = !f && so(u), e = !f && !c && ho(u), l = u, f || c ||
								e ? l = io(a) ? a : on(a) ? Mt(a) : c ? It(u, !(h = !1)) : e ? Pt(u,
									!(h = !1)) : [] : pn(u) || ro(u) ? ro(l = a) ? l = _n(a) : (!ln(
									a) || r && an(a)) && (l = we(u)) : h = !1)
						}
						h && (s.set(u, l), i(l, u, r, o, s), s.delete(u)), p(t, n, l)
					}(r, i, e, o, Z, s, a)) : ((n = s ? s(r[e], t, e + "", r, i, a) : Ss) === Ss && (n = t),
						p(r, e, n))
				}, On)
			}

			function tt(t, e) {
				var n = t.length;
				if (n) return xe(e += e < 0 ? n : 0, n) ? t[e] : Ss
			}

			function et(t, r, n) {
				var i = -1;
				return r = Qo(r.length ? r : [Nn], fs(ge())),
					function(t, e) {
						var n = t.length;
						for (t.sort(e); n--;) t[n] = t[n].value;
						return t
					}(K(t, function(e, t, n) {
						return {
							criteria: Qo(r, function(t) {
								return t(e)
							}),
							index: ++i,
							value: e
						}
					}), function(t, e) {
						return function(t, e, n) {
							for (var r = -1, i = t.criteria, o = e.criteria, s = i.length, a = n.length; ++r <
								s;) {
								var u = Nt(i[r], o[r]);
								if (u) {
									if (a <= r) return u;
									var c = n[r];
									return u * ("desc" == c ? -1 : 1)
								}
							}
							return t.index - e.index
						}(t, e, n)
					})
			}

			function nt(t, e, n) {
				for (var r = -1, i = e.length, o = {}; ++r < i;) {
					var s = e[r],
						a = D(t, s);
					n(a, s) && lt(o, Tt(s, t), a)
				}
				return o
			}

			function rt(t, e, n, r) {
				var i = r ? os : is,
					o = -1,
					s = e.length,
					a = t;
				for (t === e && (e = Mt(e)), n && (a = Qo(t, fs(n))); ++o < s;)
					for (var u = 0, c = e[o], l = n ? n(c) : c; - 1 < (u = i(a, l, u, r));) a !== t && dr.call(a, u, 1),
						dr.call(t, u, 1);
				return t
			}

			function it(t, e) {
				for (var n = t ? e.length : 0, r = n - 1; n--;) {
					var i, o = e[n];
					n != r && o === i || (xe(i = o) ? dr.call(t, o, 1) : wt(t, o))
				}
				return t
			}

			function ot(t, e) {
				return t + Cr(Nr() * (e - t + 1))
			}

			function st(t, e) {
				var n = "";
				if (!t || e < 1 || As < e) return n;
				for (; e % 2 && (n += t), e = Cr(e / 2), e && (t += t), e;);
				return n
			}

			function at(t, e) {
				return vi(Ae(t, e, Nn), t + "")
			}

			function ut(t) {
				return a(Tn(t))
			}

			function ct(t, e) {
				t = Tn(t);
				return Ne(t, x(e, 0, t.length))
			}

			function lt(t, e, n, r) {
				if (!ln(t)) return t;
				for (var i = -1, o = (e = Tt(e, t)).length, s = o - 1, a = t; null != a && ++i < o;) {
					var u, c = De(e[i]),
						l = n;
					i != s && (u = a[c], (l = r ? r(u, c, a) : Ss) === Ss && (l = ln(u) ? u : xe(e[i + 1]) ? [] : {})),
						b(a, c, l), a = a[c]
				}
				return t
			}

			function ht(t) {
				return Ne(Tn(t))
			}

			function ft(t, e, n) {
				var r = -1,
					i = t.length;
				e < 0 && (e = i < -e ? 0 : i + e), (n = i < n ? i : n) < 0 && (n += i), i = n < e ? 0 : n - e >>> 0,
					e >>>= 0;
				for (var o = Hn(i); ++r < i;) o[r] = t[r + e];
				return o
			}

			function pt(t, r) {
				var i;
				return Zr(t, function(t, e, n) {
					return !(i = r(t, e, n))
				}), !!i
			}

			function dt(t, e, n) {
				var r = 0,
					i = null == t ? r : t.length;
				if ("number" == typeof e && e == e && i <= 2147483647) {
					for (; r < i;) {
						var o = r + i >>> 1,
							s = t[o];
						null !== s && !gn(s) && (n ? s <= e : s < e) ? r = 1 + o : i = o
					}
					return i
				}
				return gt(t, e, Nn, n)
			}

			function gt(t, e, n, r) {
				e = n(e);
				for (var i = 0, o = null == t ? 0 : t.length, s = e != e, a = null === e, u = gn(e), c = e === Ss; i <
					o;) {
					var l = Cr((i + o) / 2),
						h = n(t[l]),
						f = h !== Ss,
						p = null === h,
						d = h == h,
						g = gn(h),
						h = s ? r || d : c ? d && (r || f) : a ? d && f && (r || !p) : u ? d && f && !p && (r || !g) : !
						p && !g && (r ? h <= e : h < e);
					h ? i = l + 1 : o = l
				}
				return Ir(o, 4294967294)
			}

			function mt(t, e) {
				for (var n = -1, r = t.length, i = 0, o = []; ++n < r;) {
					var s, a = t[n],
						u = e ? e(a) : a;
					n && nn(u, s) || (s = u, o[i++] = 0 === a ? 0 : a)
				}
				return o
			}

			function vt(t) {
				return "number" == typeof t ? t : gn(t) ? Is : +t
			}

			function yt(t) {
				if ("string" == typeof t) return t;
				if (io(t)) return Qo(t, yt) + "";
				if (gn(t)) return Kr ? Kr.call(t) : "";
				var e = t + "";
				return "0" == e && 1 / t == -1 / 0 ? "-0" : e
			}

			function bt(t, e, n) {
				var r = -1,
					i = Yo,
					o = t.length,
					s = !0,
					a = [],
					u = a;
				if (n) s = !1, i = Ko;
				else if (200 <= o) {
					var c = e ? null : ai(t);
					if (c) return xs(c);
					s = !1, i = ds, u = new v
				} else u = e ? [] : a;
				t: for (; ++r < o;) {
					var l = t[r],
						h = e ? e(l) : l,
						l = n || 0 !== l ? l : 0;
					if (s && h == h) {
						for (var f = u.length; f--;)
							if (u[f] === h) continue t;
						e && u.push(h), a.push(l)
					} else i(u, h, n) || (u !== a && u.push(h), a.push(l))
				}
				return a
			}

			function wt(t, e) {
				return null == (t = Ie(t, e = Tt(e, t))) || delete t[De(Be(e))]
			}

			function _t(t, e, n, r) {
				return lt(t, e, n(D(t, e)), r)
			}

			function xt(t, e, n, r) {
				for (var i = t.length, o = r ? i : -1;
					(r ? o-- : ++o < i) && e(t[o], o, t););
				return n ? ft(t, r ? 0 : o, r ? o + 1 : i) : ft(t, r ? o + 1 : 0, r ? i : o)
			}

			function Ct(t, e) {
				return t instanceof m && (t = t.value()), Zo(e, function(t, e) {
					return e.func.apply(e.thisArg, Jo([t], e.args))
				}, t)
			}

			function kt(t, e, n) {
				var r = t.length;
				if (r < 2) return r ? bt(t[0]) : [];
				for (var i = -1, o = Hn(r); ++i < r;)
					for (var s = t[i], a = -1; ++a < r;) a != i && (o[i] = O(o[i] || s, t[a], e, n));
				return bt(I(o, 1), e, n)
			}

			function St(t, e, n) {
				for (var r = -1, i = t.length, o = e.length, s = {}; ++r < i;) {
					var a = r < o ? e[r] : Ss;
					n(s, t[r], a)
				}
				return s
			}

			function Ot(t) {
				return on(t) ? t : []
			}

			function Et(t) {
				return "function" == typeof t ? t : Nn
			}

			function Tt(t, e) {
				return io(t) ? t : ke(t, e) ? [t] : yi(xn(t))
			}

			function At(t, e, n) {
				var r = t.length;
				return n = n === Ss ? r : n, !e && r <= n ? t : ft(t, e, n)
			}

			function It(t, e) {
				if (e) return t.slice();
				e = t.length, e = lr ? lr(e) : new t.constructor(e);
				return t.copy(e), e
			}

			function jt(t) {
				var e = new t.constructor(t.byteLength);
				return new cr(e).set(new cr(t)), e
			}

			function Pt(t, e) {
				e = e ? jt(t.buffer) : t.buffer;
				return new t.constructor(e, t.byteOffset, t.length)
			}

			function Nt(t, e) {
				if (t !== e) {
					var n = t !== Ss,
						r = null === t,
						i = t == t,
						o = gn(t),
						s = e !== Ss,
						a = null === e,
						u = e == e,
						c = gn(e);
					if (!a && !c && !o && e < t || o && s && u && !a && !c || r && s && u || !n && u || !i) return 1;
					if (!r && !o && !c && t < e || c && n && i && !r && !o || a && n && i || !s && i || !u) return -1
				}
				return 0
			}

			function Dt(t, e, n, r) {
				for (var i = -1, o = t.length, s = n.length, a = -1, u = e.length, c = Ar(o - s, 0), l = Hn(u + c),
						h = !r; ++a < u;) l[a] = e[a];
				for (; ++i < s;)(h || i < o) && (l[n[i]] = t[i]);
				for (; c--;) l[a++] = t[i++];
				return l
			}

			function Rt(t, e, n, r) {
				for (var i = -1, o = t.length, s = -1, a = n.length, u = -1, c = e.length, l = Ar(o - a, 0), h = Hn(l +
						c), f = !r; ++i < l;) h[i] = t[i];
				for (var p = i; ++u < c;) h[p + u] = e[u];
				for (; ++s < a;)(f || i < o) && (h[p + n[s]] = t[i++]);
				return h
			}

			function Mt(t, e) {
				var n = -1,
					r = t.length;
				for (e = e || Hn(r); ++n < r;) e[n] = t[n];
				return e
			}

			function Wt(t, e, n, r) {
				var i = !n;
				n = n || {};
				for (var o = -1, s = e.length; ++o < s;) {
					var a = e[o],
						u = r ? r(n[a], t[a], a, n, t) : Ss;
					u === Ss && (u = t[a]), (i ? f : b)(n, a, u)
				}
				return n
			}

			function Lt(i, o) {
				return function(t, e) {
					var n = io(t) ? Uo : h,
						r = o ? o() : {};
					return n(t, i, ge(e, 2), r)
				}
			}

			function Ft(a) {
				return at(function(t, e) {
					var n = -1,
						r = e.length,
						i = 1 < r ? e[r - 1] : Ss,
						o = 2 < r ? e[2] : Ss,
						i = 3 < a.length && "function" == typeof i ? (r--, i) : Ss;
					for (o && Ce(e[0], e[1], o) && (i = r < 3 ? Ss : i, r = 1), t = Gn(t); ++n < r;) {
						var s = e[n];
						s && a(t, s, n, i)
					}
					return t
				})
			}

			function Ht(o, s) {
				return function(t, e) {
					if (null == t) return t;
					if (!rn(t)) return o(t, e);
					for (var n = t.length, r = s ? n : -1, i = Gn(t);
						(s ? r-- : ++r < n) && !1 !== e(i[r], r, i););
					return t
				}
			}

			function Bt(u) {
				return function(t, e, n) {
					for (var r = -1, i = Gn(t), o = n(t), s = o.length; s--;) {
						var a = o[u ? s : ++r];
						if (!1 === e(i[a], a, i)) break
					}
					return t
				}
			}

			function qt(r) {
				return function(t) {
					var e = ys(t = xn(t)) ? ks(t) : Ss,
						n = e ? e[0] : t.charAt(0),
						t = e ? At(e, 1).join("") : t.slice(1);
					return n[r]() + t
				}
			}

			function zt(e) {
				return function(t) {
					return Zo(jn(In(t).replace(Ha, "")), e, "")
				}
			}

			function Ut(r) {
				return function() {
					var t = arguments;
					switch (t.length) {
						case 0:
							return new r;
						case 1:
							return new r(t[0]);
						case 2:
							return new r(t[0], t[1]);
						case 3:
							return new r(t[0], t[1], t[2]);
						case 4:
							return new r(t[0], t[1], t[2], t[3]);
						case 5:
							return new r(t[0], t[1], t[2], t[3], t[4]);
						case 6:
							return new r(t[0], t[1], t[2], t[3], t[4], t[5]);
						case 7:
							return new r(t[0], t[1], t[2], t[3], t[4], t[5], t[6])
					}
					var e = Qr(r.prototype),
						n = r.apply(e, t);
					return ln(n) ? n : e
				}
			}

			function Gt(o, s, a) {
				var u = Ut(o);
				return function t() {
					for (var e = arguments.length, n = Hn(e), r = e, i = de(t); r--;) n[r] = arguments[r];
					i = e < 3 && n[0] !== i && n[e - 1] !== i ? [] : _s(n, i);
					return (e -= i.length) < a ? ne(o, s, Xt, t.placeholder, Ss, n, i, Ss, Ss, a - e) : zo(this &&
						this !== Ka && this instanceof t ? u : o, this, n)
				}
			}

			function Vt(o) {
				return function(t, e, n) {
					var r, i = Gn(t);
					rn(t) || (r = ge(e, 3), t = Sn(t), e = function(t) {
						return r(i[t], t, i)
					});
					n = o(t, e, n);
					return -1 < n ? i[r ? t[n] : n] : Ss
				}
			}

			function $t(u) {
				return le(function(i) {
					var o = i.length,
						t = o,
						e = g.prototype.thru;
					for (u && i.reverse(); t--;) {
						var n = i[t];
						if ("function" != typeof n) throw new Xn(Os);
						e && !a && "wrapper" == pe(n) && (a = new g([], !0))
					}
					for (t = a ? t : o; ++t < o;) var r = pe(n = i[t]),
						s = "wrapper" == r ? ui(n) : Ss,
						a = s && Se(s[0]) && 424 == s[1] && !s[4].length && 1 == s[9] ? a[pe(s[0])].apply(a,
							s[3]) : 1 == n.length && Se(n) ? a[r]() : a.thru(n);
					return function() {
						var t = arguments,
							e = t[0];
						if (a && 1 == t.length && io(e)) return a.plant(e).value();
						for (var n = 0, r = o ? i[n].apply(this, t) : e; ++n < o;) r = i[n].call(this, r);
						return r
					}
				})
			}

			function Xt(a, u, c, l, h, f, p, d, g, m) {
				var v = 128 & u,
					y = 1 & u,
					b = 2 & u,
					w = 24 & u,
					_ = 512 & u,
					x = b ? Ss : Ut(a);
				return function t() {
					for (var e, n = Hn(s = arguments.length), r = s; r--;) n[r] = arguments[r];
					if (w && (e = function(t, e) {
							for (var n = t.length, r = 0; n--;) t[n] === e && ++r;
							return r
						}(n, o = de(t))), l && (n = Dt(n, l, h, w)), f && (n = Rt(n, f, p, w)), s -= e, w && s <
						m) {
						var i = _s(n, o);
						return ne(a, u, Xt, t.placeholder, c, n, i, d, g, m - s)
					}
					var o = y ? c : this,
						i = b ? o[a] : a,
						s = n.length;
					return d ? n = function(t, e) {
							for (var n = t.length, r = Ir(e.length, n), i = Mt(t); r--;) {
								var o = e[r];
								t[r] = xe(o, n) ? i[o] : Ss
							}
							return t
						}(n, d) : _ && 1 < s && n.reverse(), v && g < s && (n.length = g), this && this !== Ka &&
						this instanceof t && (i = x || Ut(i)), i.apply(o, n)
				}
			}

			function Yt(n, s) {
				return function(t, e) {
					return t = t, r = n, i = s(e), o = {}, j(t, function(t, e, n) {
						r(o, i(t), e, n)
					}), o;
					var r, i, o
				}
			}

			function Kt(r, i) {
				return function(t, e) {
					var n;
					if (t === Ss && e === Ss) return i;
					if (t !== Ss && (n = t), e !== Ss) {
						if (n === Ss) return e;
						e = "string" == typeof t || "string" == typeof e ? (t = yt(t), yt(e)) : (t = vt(t), vt(e)),
							n = r(t, e)
					}
					return n
				}
			}

			function Qt(r) {
				return le(function(t) {
					return t = Qo(t, fs(ge())), at(function(e) {
						var n = this;
						return r(t, function(t) {
							return zo(t, n, e)
						})
					})
				})
			}

			function Jt(t, e) {
				var n = (e = e === Ss ? " " : yt(e)).length;
				if (n < 2) return n ? st(e, t) : e;
				n = st(e, xr(t / Cs(e)));
				return ys(e) ? At(ks(n), 0, t).join("") : n.slice(0, t)
			}

			function Zt(a, t, u, c) {
				var l = 1 & t,
					h = Ut(a);
				return function t() {
					for (var e = -1, n = arguments.length, r = -1, i = c.length, o = Hn(i + n), s = this && this !==
							Ka && this instanceof t ? h : a; ++r < i;) o[r] = c[r];
					for (; n--;) o[r++] = arguments[++e];
					return zo(s, l ? u : this, o)
				}
			}

			function te(r) {
				return function(t, e, n) {
					return n && "number" != typeof n && Ce(t, e, n) && (e = n = Ss), t = vn(t), e === Ss ? (e = t,
							t = 0) : e = vn(e),
						function(t, e, n, r) {
							for (var i = -1, o = Ar(xr((e - t) / (n || 1)), 0), s = Hn(o); o--;) s[r ? o : ++i] = t,
								t += n;
							return s
						}(t, e, n = n === Ss ? t < e ? 1 : -1 : vn(n), r)
				}
			}

			function ee(n) {
				return function(t, e) {
					return "string" == typeof t && "string" == typeof e || (t = wn(t), e = wn(e)), n(t, e)
				}
			}

			function ne(t, e, n, r, i, o, s, a, u, c) {
				var l = 8 & e;
				e |= l ? 32 : 64, 4 & (e &= ~(l ? 64 : 32)) || (e &= -4);
				c = [t, e, i, l ? o : Ss, l ? s : Ss, l ? Ss : o, l ? Ss : s, a, u, c], n = n.apply(Ss, c);
				return Se(t) && gi(n, c), n.placeholder = r, je(n, t, e)
			}

			function re(t) {
				var r = Un[t];
				return function(t, e) {
					if (t = wn(t), e = null == e ? 0 : Ir(yn(e), 292)) {
						var n = (xn(t) + "e").split("e");
						return +((n = (xn(r(n[0] + "e" + (+n[1] + e))) + "e").split("e"))[0] + "e" + (+n[1] - e))
					}
					return r(t)
				}
			}

			function ie(o) {
				return function(t) {
					var e, n, r, i = hi(t);
					return i == Hs ? bs(t) : i == Gs ? (i = t, n = -1, r = Array(i.size), i.forEach(function(t) {
						r[++n] = [t, t]
					}), r) : Qo(o(e = t), function(t) {
						return [t, e[t]]
					})
				}
			}

			function oe(t, e, n, r, i, o, s, a) {
				var u = 2 & e;
				if (!u && "function" != typeof t) throw new Xn(Os);
				var c, l, h = r ? r.length : 0;
				h || (e &= -97, r = i = Ss), s = s === Ss ? s : Ar(yn(s), 0), a = a === Ss ? a : yn(a), h -= i ? i
					.length : 0, 64 & e && (c = r, l = i, r = i = Ss);
				var f, p, d, g, m = u ? Ss : ui(t),
					s = [t, e, n, r, i, c, l, o, s, a];
				return m && function(t, e) {
					var n = t[1],
						r = e[1],
						i = n | r,
						o = i < 131,
						s = 128 == r && 8 == n || 128 == r && 256 == n && t[7].length <= e[8] || 384 == r && e[7]
						.length <= e[8] && 8 == n;
					if (!o && !s) return;
					1 & r && (t[2] = e[2], i |= 1 & n ? 0 : 4);
					n = e[3]; {
						var a;
						n && (a = t[3], t[3] = a ? Dt(a, n, e[4]) : n, t[4] = a ? _s(t[3], Ts) : e[4])
					}(n = e[5]) && (a = t[5], t[5] = a ? Rt(a, n, e[6]) : n, t[6] = a ? _s(t[5], Ts) : e[6]), (n =
						e[7]) && (t[7] = n), 128 & r && (t[8] = null == t[8] ? e[8] : Ir(t[8], e[8])), null == t[
						9] && (t[9] = e[9]), t[0] = e[0], t[1] = i
				}(s, m), t = s[0], e = s[1], n = s[2], r = s[3], i = s[4], !(a = s[9] = s[9] === Ss ? u ? 0 : t
					.length : Ar(s[9] - h, 0)) && 24 & e && (e &= -25), n = e && 1 != e ? 8 == e || 16 == e ? Gt(t,
					e, a) : 32 != e && 33 != e || i.length ? Xt.apply(Ss, s) : Zt(t, e, n, r) : (p = n, d = 1 & e,
					g = Ut(f = t),
					function t() {
						return (this && this !== Ka && this instanceof t ? g : f).apply(d ? p : this, arguments)
					}), je((m ? ri : gi)(n, s), t, e)
			}

			function se(t, e, n, r) {
				return t === Ss || nn(t, Qn[n]) && !tr.call(r, n) ? e : t
			}

			function ae(t, e, n, r, i, o) {
				return ln(t) && ln(e) && (o.set(e, t), Z(t, e, Ss, ae, o), o.delete(e)), t
			}

			function ue(t) {
				return pn(t) ? Ss : t
			}

			function ce(t, e, n, r, i, o) {
				var s = 1 & n,
					a = t.length,
					u = e.length;
				if (a != u && !(s && a < u)) return !1;
				u = o.get(t);
				if (u && o.get(e)) return u == e;
				var c = -1,
					l = !0,
					h = 2 & n ? new v : Ss;
				for (o.set(t, e), o.set(e, t); ++c < a;) {
					var f, p = t[c],
						d = e[c];
					if (r && (f = s ? r(d, p, c, e, t, o) : r(p, d, c, t, e, o)), f !== Ss) {
						if (f) continue;
						l = !1;
						break
					}
					if (h) {
						if (!es(e, function(t, e) {
								return !ds(h, e) && (p === t || i(p, t, n, r, o)) && h.push(e)
							})) {
							l = !1;
							break
						}
					} else if (p !== d && !i(p, d, n, r, o)) {
						l = !1;
						break
					}
				}
				return o.delete(t), o.delete(e), l
			}

			function le(t) {
				return vi(Ae(t, Ss, Fe), t + "")
			}

			function he(t) {
				return R(t, Sn, ci)
			}

			function fe(t) {
				return R(t, On, li)
			}

			function pe(t) {
				for (var e = t.name + "", n = qr[e], r = tr.call(qr, e) ? n.length : 0; r--;) {
					var i = n[r],
						o = i.func;
					if (null == o || o == t) return i.name
				}
				return e
			}

			function de(t) {
				return (tr.call(d, "placeholder") ? d : t).placeholder
			}

			function ge() {
				var t = (t = d.iteratee || Dn) === Dn ? V : t;
				return arguments.length ? t(arguments[0], arguments[1]) : t
			}

			function me(t, e) {
				var n, r = t.__data__;
				return ("string" == (t = typeof(n = e)) || "number" == t || "symbol" == t || "boolean" == t ?
					"__proto__" !== n : null === n) ? r["string" == typeof e ? "string" : "hash"] : r.map
			}

			function ve(t) {
				for (var e = Sn(t), n = e.length; n--;) {
					var r = e[n],
						i = t[r];
					e[n] = [r, i, Ee(i)]
				}
				return e
			}

			function ye(t, e) {
				e = e, e = null == (t = t) ? Ss : t[e];
				return G(e) ? e : Ss
			}

			function be(t, e, n) {
				for (var r = -1, i = (e = Tt(e, t)).length, o = !1; ++r < i;) {
					var s = De(e[r]);
					if (!(o = null != t && n(t, s))) break;
					t = t[s]
				}
				return o || ++r != i ? o : !!(i = null == t ? 0 : t.length) && cn(i) && xe(s, i) && (io(t) || ro(t))
			}

			function we(t) {
				return "function" != typeof t.constructor || Oe(t) ? {} : Qr(hr(t))
			}

			function _e(t) {
				return io(t) || ro(t) || !!(gr && t && t[gr])
			}

			function xe(t, e) {
				return !!(e = null == e ? As : e) && ("number" == typeof t || Ma.test(t)) && -1 < t && t % 1 == 0 && t <
					e
			}

			function Ce(t, e, n) {
				if (ln(n)) {
					var r = typeof e;
					return ("number" == r ? rn(n) && xe(e, n.length) : "string" == r && e in n) && nn(n[e], t)
				}
			}

			function ke(t, e) {
				if (!io(t)) {
					var n = typeof t;
					return "number" == n || "symbol" == n || "boolean" == n || null == t || gn(t) || va.test(t) || !ma
						.test(t) || null != e && t in Gn(e)
				}
			}

			function Se(t) {
				var e = pe(t),
					n = d[e];
				if ("function" == typeof n && e in m.prototype) {
					if (t === n) return 1;
					n = ui(n);
					return n && t === n[0]
				}
			}

			function Oe(t) {
				var e = t && t.constructor;
				return t === ("function" == typeof e && e.prototype || Qn)
			}

			function Ee(t) {
				return t == t && !ln(t)
			}

			function Te(e, n) {
				return function(t) {
					return null != t && t[e] === n && (n !== Ss || e in Gn(t))
				}
			}

			function Ae(o, s, a) {
				return s = Ar(s === Ss ? o.length - 1 : s, 0),
					function() {
						for (var t = arguments, e = -1, n = Ar(t.length - s, 0), r = Hn(n); ++e < n;) r[e] = t[s + e];
						e = -1;
						for (var i = Hn(s + 1); ++e < s;) i[e] = t[e];
						return i[s] = a(r), zo(o, this, i)
					}
			}

			function Ie(t, e) {
				return e.length < 2 ? t : D(t, ft(e, 0, -1))
			}

			function je(t, e, n) {
				var r, i, e = e + "";
				return vi(t, function(t, e) {
					var n = e.length;
					if (!n) return t;
					var r = n - 1;
					return e[r] = (1 < n ? "& " : "") + e[r], e = e.join(2 < n ? ", " : " "), t.replace(Sa,
						"{\n/* [wrapped with " + e + "] */\n")
				}(e, (r = (e = (e = e).match(Oa)) ? e[1].split(Ea) : [], i = n, Go(Ps, function(t) {
					var e = "_." + t[0];
					i & t[1] && !Yo(r, e) && r.push(e)
				}), r.sort())))
			}

			function Pe(n) {
				var r = 0,
					i = 0;
				return function() {
					var t = jr(),
						e = 16 - (t - i);
					if (i = t, 0 < e) {
						if (800 <= ++r) return arguments[0]
					} else r = 0;
					return n.apply(Ss, arguments)
				}
			}

			function Ne(t, e) {
				var n = -1,
					r = t.length,
					i = r - 1;
				for (e = e === Ss ? r : e; ++n < e;) {
					var o = ot(n, i),
						s = t[o];
					t[o] = t[n], t[n] = s
				}
				return t.length = e, t
			}

			function De(t) {
				if ("string" == typeof t || gn(t)) return t;
				var e = t + "";
				return "0" == e && 1 / t == -1 / 0 ? "-0" : e
			}

			function Re(t) {
				if (null != t) {
					try {
						return Zn.call(t)
					} catch (t) {}
					try {
						return t + ""
					} catch (t) {}
				}
				return ""
			}

			function Me(t) {
				if (t instanceof m) return t.clone();
				var e = new g(t.__wrapped__, t.__chain__);
				return e.__actions__ = Mt(t.__actions__), e.__index__ = t.__index__, e.__values__ = t.__values__, e
			}

			function We(t, e, n) {
				var r = null == t ? 0 : t.length;
				if (!r) return -1;
				n = null == n ? 0 : yn(n);
				return n < 0 && (n = Ar(r + n, 0)), rs(t, ge(e, 3), n)
			}

			function Le(t, e, n) {
				var r = null == t ? 0 : t.length;
				if (!r) return -1;
				var i = r - 1;
				return n !== Ss && (i = yn(n), i = n < 0 ? Ar(r + i, 0) : Ir(i, r - 1)), rs(t, ge(e, 3), i, !0)
			}

			function Fe(t) {
				return (null == t ? 0 : t.length) ? I(t, 1) : []
			}

			function He(t) {
				return t && t.length ? t[0] : Ss
			}

			function Be(t) {
				var e = null == t ? 0 : t.length;
				return e ? t[e - 1] : Ss
			}

			function qe(t, e) {
				return t && t.length && e && e.length ? rt(t, e) : t
			}

			function ze(t) {
				return null == t ? t : Dr.call(t)
			}

			function Ue(e) {
				if (!e || !e.length) return [];
				var n = 0;
				return e = Xo(e, function(t) {
					return on(t) && (n = Ar(t.length, n), 1)
				}), hs(n, function(t) {
					return Qo(e, us(t))
				})
			}

			function Ge(t, e) {
				if (!t || !t.length) return [];
				t = Ue(t);
				return null == e ? t : Qo(t, function(t) {
					return zo(e, Ss, t)
				})
			}

			function Ve(t) {
				t = d(t);
				return t.__chain__ = !0, t
			}

			function $e(t, e) {
				return e(t)
			}

			function Xe(t, e) {
				return (io(t) ? Go : Zr)(t, ge(e, 3))
			}

			function Ye(t, e) {
				return (io(t) ? Vo : ti)(t, ge(e, 3))
			}

			function Ke(t, e) {
				return (io(t) ? Qo : K)(t, ge(e, 3))
			}

			function Qe(t, e, n) {
				return e = n ? Ss : e, e = t && null == e ? t.length : e, oe(t, 128, Ss, Ss, Ss, Ss, e)
			}

			function Je(t, e) {
				var n;
				if ("function" != typeof e) throw new Xn(Os);
				return t = yn(t),
					function() {
						return 0 < --t && (n = e.apply(this, arguments)), t <= 1 && (e = Ss), n
					}
			}

			function Ze(r, n, t) {
				function i(t) {
					var e = u,
						n = c;
					return u = c = Ss, d = t, h = r.apply(n, e)
				}

				function o(t) {
					var e = t - p;
					return p === Ss || n <= e || e < 0 || m && l <= t - d
				}

				function s() {
					var t, e = Gi();
					return o(e) ? a(e) : void(f = mi(s, (e = n - ((t = e) - p), m ? Ir(e, l - (t - d)) : e)))
				}

				function a(t) {
					return f = Ss, v && u ? i(t) : (u = c = Ss, h)
				}

				function e() {
					var t = Gi(),
						e = o(t);
					if (u = arguments, c = this, p = t, e) {
						if (f === Ss) return d = e = p, f = mi(s, n), g ? i(e) : h;
						if (m) return f = mi(s, n), i(p)
					}
					return f === Ss && (f = mi(s, n)), h
				}
				var u, c, l, h, f, p, d = 0,
					g = !1,
					m = !1,
					v = !0;
				if ("function" != typeof r) throw new Xn(Os);
				return n = wn(n) || 0, ln(t) && (g = !!t.leading, m = "maxWait" in t, l = m ? Ar(wn(t.maxWait) || 0,
					n) : l, v = "trailing" in t ? !!t.trailing : v), e.cancel = function() {
					f !== Ss && si(f), d = 0, u = p = c = f = Ss
				}, e.flush = function() {
					return f === Ss ? h : a(Gi())
				}, e
			}

			function tn(r, i) {
				if ("function" != typeof r || null != i && "function" != typeof i) throw new Xn(Os);
				var o = function() {
					var t = arguments,
						e = i ? i.apply(this, t) : t[0],
						n = o.cache;
					if (n.has(e)) return n.get(e);
					t = r.apply(this, t);
					return o.cache = n.set(e, t) || n, t
				};
				return o.cache = new(tn.Cache || s), o
			}

			function en(e) {
				if ("function" != typeof e) throw new Xn(Os);
				return function() {
					var t = arguments;
					switch (t.length) {
						case 0:
							return !e.call(this);
						case 1:
							return !e.call(this, t[0]);
						case 2:
							return !e.call(this, t[0], t[1]);
						case 3:
							return !e.call(this, t[0], t[1], t[2])
					}
					return !e.apply(this, t)
				}
			}

			function nn(t, e) {
				return t === e || t != t && e != e
			}

			function rn(t) {
				return null != t && cn(t.length) && !an(t)
			}

			function on(t) {
				return hn(t) && rn(t)
			}

			function sn(t) {
				if (!hn(t)) return !1;
				var e = M(t);
				return e == Ws || "[object DOMException]" == e || "string" == typeof t.message && "string" == typeof t
					.name && !pn(t)
			}

			function an(t) {
				if (!ln(t)) return !1;
				t = M(t);
				return t == Ls || t == Fs || "[object AsyncFunction]" == t || "[object Proxy]" == t
			}

			function un(t) {
				return "number" == typeof t && t == yn(t)
			}

			function cn(t) {
				return "number" == typeof t && -1 < t && t % 1 == 0 && t <= As
			}

			function ln(t) {
				var e = typeof t;
				return null != t && ("object" == e || "function" == e)
			}

			function hn(t) {
				return null != t && "object" == typeof t
			}

			function fn(t) {
				return "number" == typeof t || hn(t) && M(t) == Bs
			}

			function pn(t) {
				if (!hn(t) || M(t) != qs) return !1;
				t = hr(t);
				if (null === t) return !0;
				t = tr.call(t, "constructor") && t.constructor;
				return "function" == typeof t && t instanceof t && Zn.call(t) == ir
			}

			function dn(t) {
				return "string" == typeof t || !io(t) && hn(t) && M(t) == Vs
			}

			function gn(t) {
				return "symbol" == typeof t || hn(t) && M(t) == $s
			}

			function mn(t) {
				if (!t) return [];
				if (rn(t)) return (dn(t) ? ks : Mt)(t);
				if (mr && t[mr]) return function(t) {
					for (var e, n = []; !(e = t.next()).done;) n.push(e.value);
					return n
				}(t[mr]());
				var e = hi(t);
				return (e == Hs ? bs : e == Gs ? xs : Tn)(t)
			}

			function vn(t) {
				return t ? (t = wn(t)) !== 1 / 0 && t !== -1 / 0 ? t == t ? t : 0 : 17976931348623157e292 * (t < 0 ? -
					1 : 1) : 0 === t ? t : 0
			}

			function yn(t) {
				var e = vn(t),
					t = e % 1;
				return e == e ? t ? e - t : e : 0
			}

			function bn(t) {
				return t ? x(yn(t), 0, js) : 0
			}

			function wn(t) {
				if ("number" == typeof t) return t;
				if (gn(t)) return Is;
				if (ln(t) && (t = ln(e = "function" == typeof t.valueOf ? t.valueOf() : t) ? e + "" : e), "string" !=
					typeof t) return 0 === t ? t : +t;
				t = t.replace(xa, "");
				var e = Na.test(t);
				return e || Ra.test(t) ? Ya(t.slice(2), e ? 2 : 8) : Pa.test(t) ? Is : +t
			}

			function _n(t) {
				return Wt(t, On(t))
			}

			function xn(t) {
				return null == t ? "" : yt(t)
			}

			function Cn(t, e, n) {
				e = null == t ? Ss : D(t, e);
				return e === Ss ? n : e
			}

			function kn(t, e) {
				return null != t && be(t, e, F)
			}

			function Sn(t) {
				return (rn(t) ? r : $)(t)
			}

			function On(t) {
				return rn(t) ? r(t, !0) : X(t)
			}

			function En(t, n) {
				if (null == t) return {};
				var e = Qo(fe(t), function(t) {
					return [t]
				});
				return n = ge(n), nt(t, e, function(t, e) {
					return n(t, e[0])
				})
			}

			function Tn(t) {
				return null == t ? [] : ps(t, Sn(t))
			}

			function An(t) {
				return Lo(xn(t).toLowerCase())
			}

			function In(t) {
				return (t = xn(t)) && t.replace(Wa, iu).replace(Ba, "")
			}

			function jn(t, e, n) {
				return t = xn(t), (e = n ? Ss : e) === Ss ? (n = t, za.test(n) ? t.match(qa) || [] : t.match(Ta) ||
				[]) : t.match(e) || []
			}

			function Pn(t) {
				return function() {
					return t
				}
			}

			function Nn(t) {
				return t
			}

			function Dn(t) {
				return V("function" == typeof t ? t : C(t, 1))
			}

			function Rn(r, e, t) {
				var n = Sn(e),
					i = N(e, n);
				null != t || ln(e) && (i.length || !n.length) || (t = e, e = r, r = this, i = N(e, Sn(e)));
				var o = !(ln(t) && "chain" in t && !t.chain),
					s = an(r);
				return Go(i, function(t) {
					var n = e[t];
					r[t] = n, s && (r.prototype[t] = function() {
						var t = this.__chain__;
						if (o || t) {
							var e = r(this.__wrapped__);
							return (e.__actions__ = Mt(this.__actions__)).push({
								func: n,
								args: arguments,
								thisArg: r
							}), e.__chain__ = t, e
						}
						return n.apply(r, Jo([this.value()], arguments))
					})
				}), r
			}

			function Mn() {}

			function Wn(t) {
				return ke(t) ? us(De(t)) : (e = t, function(t) {
					return D(t, e)
				});
				var e
			}

			function Ln() {
				return []
			}

			function Fn() {
				return !1
			}
			var Hn = (e = null == e ? Ka : au.defaults(Ka.Object(), e, au.pick(Ka, Ua))).Array,
				Bn = e.Date,
				qn = e.Error,
				zn = e.Function,
				Un = e.Math,
				Gn = e.Object,
				Vn = e.RegExp,
				$n = e.String,
				Xn = e.TypeError,
				Yn = Hn.prototype,
				Kn = zn.prototype,
				Qn = Gn.prototype,
				Jn = e["__core-js_shared__"],
				Zn = Kn.toString,
				tr = Qn.hasOwnProperty,
				er = 0,
				nr = (Ho = /[^.]+$/.exec(Jn && Jn.keys && Jn.keys.IE_PROTO || "")) ? "Symbol(src)_1." + Ho : "",
				rr = Qn.toString,
				ir = Zn.call(Gn),
				or = Ka._,
				sr = Vn("^" + Zn.call(tr).replace(wa, "\\$&").replace(
					/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, "$1.*?") + "$"),
				ar = Qa ? e.Buffer : Ss,
				ur = e.Symbol,
				cr = e.Uint8Array,
				lr = ar ? ar.allocUnsafe : Ss,
				hr = ws(Gn.getPrototypeOf, Gn),
				fr = Gn.create,
				pr = Qn.propertyIsEnumerable,
				dr = Yn.splice,
				gr = ur ? ur.isConcatSpreadable : Ss,
				mr = ur ? ur.iterator : Ss,
				vr = ur ? ur.toStringTag : Ss,
				yr = function() {
					try {
						var t = ye(Gn, "defineProperty");
						return t({}, "", {}), t
					} catch (t) {}
				}(),
				br = e.clearTimeout !== Ka.clearTimeout && e.clearTimeout,
				wr = Bn && Bn.now !== Ka.Date.now && Bn.now,
				_r = e.setTimeout !== Ka.setTimeout && e.setTimeout,
				xr = Un.ceil,
				Cr = Un.floor,
				kr = Gn.getOwnPropertySymbols,
				Sr = ar ? ar.isBuffer : Ss,
				Or = e.isFinite,
				Er = Yn.join,
				Tr = ws(Gn.keys, Gn),
				Ar = Un.max,
				Ir = Un.min,
				jr = Bn.now,
				Pr = e.parseInt,
				Nr = Un.random,
				Dr = Yn.reverse,
				Rr = ye(e, "DataView"),
				Mr = ye(e, "Map"),
				Wr = ye(e, "Promise"),
				Lr = ye(e, "Set"),
				Fr = ye(e, "WeakMap"),
				Hr = ye(Gn, "create"),
				Br = Fr && new Fr,
				qr = {},
				zr = Re(Rr),
				Ur = Re(Mr),
				Gr = Re(Wr),
				Vr = Re(Lr),
				$r = Re(Fr),
				Xr = ur ? ur.prototype : Ss,
				Yr = Xr ? Xr.valueOf : Ss,
				Kr = Xr ? Xr.toString : Ss,
				Qr = function(t) {
					if (!ln(t)) return {};
					if (fr) return fr(t);
					Jr.prototype = t;
					t = new Jr;
					return Jr.prototype = Ss, t
				};

			function Jr() {}
			d.templateSettings = {
				escape: pa,
				evaluate: da,
				interpolate: ga,
				variable: "",
				imports: {
					_: d
				}
			}, (d.prototype = o.prototype).constructor = d, (g.prototype = Qr(o.prototype)).constructor = g, (m
				.prototype = Qr(o.prototype)).constructor = m, n.prototype.clear = function() {
				this.__data__ = Hr ? Hr(null) : {}, this.size = 0
			}, n.prototype.delete = function(t) {
				return t = this.has(t) && delete this.__data__[t], this.size -= t ? 1 : 0, t
			}, n.prototype.get = function(t) {
				var e = this.__data__;
				if (Hr) {
					var n = e[t];
					return n === Es ? Ss : n
				}
				return tr.call(e, t) ? e[t] : Ss
			}, n.prototype.has = function(t) {
				var e = this.__data__;
				return Hr ? e[t] !== Ss : tr.call(e, t)
			}, n.prototype.set = function(t, e) {
				var n = this.__data__;
				return this.size += this.has(t) ? 0 : 1, n[t] = Hr && e === Ss ? Es : e, this
			}, i.prototype.clear = function() {
				this.__data__ = [], this.size = 0
			}, i.prototype.delete = function(t) {
				var e = this.__data__;
				return !((t = l(e, t)) < 0) && (t == e.length - 1 ? e.pop() : dr.call(e, t, 1), --this.size, !0)
			}, i.prototype.get = function(t) {
				var e = this.__data__;
				return (t = l(e, t)) < 0 ? Ss : e[t][1]
			}, i.prototype.has = function(t) {
				return -1 < l(this.__data__, t)
			}, i.prototype.set = function(t, e) {
				var n = this.__data__,
					r = l(n, t);
				return r < 0 ? (++this.size, n.push([t, e])) : n[r][1] = e, this
			}, s.prototype.clear = function() {
				this.size = 0, this.__data__ = {
					hash: new n,
					map: new(Mr || i),
					string: new n
				}
			}, s.prototype.delete = function(t) {
				return t = me(this, t).delete(t), this.size -= t ? 1 : 0, t
			}, s.prototype.get = function(t) {
				return me(this, t).get(t)
			}, s.prototype.has = function(t) {
				return me(this, t).has(t)
			}, s.prototype.set = function(t, e) {
				var n = me(this, t),
					r = n.size;
				return n.set(t, e), this.size += n.size == r ? 0 : 1, this
			}, v.prototype.add = v.prototype.push = function(t) {
				return this.__data__.set(t, Es), this
			}, v.prototype.has = function(t) {
				return this.__data__.has(t)
			}, y.prototype.clear = function() {
				this.__data__ = new i, this.size = 0
			}, y.prototype.delete = function(t) {
				var e = this.__data__,
					t = e.delete(t);
				return this.size = e.size, t
			}, y.prototype.get = function(t) {
				return this.__data__.get(t)
			}, y.prototype.has = function(t) {
				return this.__data__.has(t)
			}, y.prototype.set = function(t, e) {
				var n = this.__data__;
				if (n instanceof i) {
					var r = n.__data__;
					if (!Mr || r.length < 199) return r.push([t, e]), this.size = ++n.size, this;
					n = this.__data__ = new s(r)
				}
				return n.set(t, e), this.size = n.size, this
			};
			var Zr = Ht(j),
				ti = Ht(P, !0),
				ei = Bt(),
				ni = Bt(!0),
				ri = Br ? function(t, e) {
					return Br.set(t, e), t
				} : Nn,
				ii = yr ? function(t, e) {
					return yr(t, "toString", {
						configurable: !0,
						enumerable: !1,
						value: Pn(e),
						writable: !0
					})
				} : Nn,
				oi = at,
				si = br || function(t) {
					return Ka.clearTimeout(t)
				},
				ai = Lr && 1 / xs(new Lr([, -0]))[1] == 1 / 0 ? function(t) {
					return new Lr(t)
				} : Mn,
				ui = Br ? function(t) {
					return Br.get(t)
				} : Mn,
				ci = kr ? function(e) {
					return null == e ? [] : (e = Gn(e), Xo(kr(e), function(t) {
						return pr.call(e, t)
					}))
				} : Ln,
				li = kr ? function(t) {
					for (var e = []; t;) Jo(e, ci(t)), t = hr(t);
					return e
				} : Ln,
				hi = M;
			(Rr && hi(new Rr(new ArrayBuffer(1))) != Ks || Mr && hi(new Mr) != Hs || Wr && hi(Wr.resolve()) != zs ||
				Lr && hi(new Lr) != Gs || Fr && hi(new Fr) != Xs) && (hi = function(t) {
				var e = M(t),
					t = e == qs ? t.constructor : Ss,
					t = t ? Re(t) : "";
				if (t) switch (t) {
					case zr:
						return Ks;
					case Ur:
						return Hs;
					case Gr:
						return zs;
					case Vr:
						return Gs;
					case $r:
						return Xs
				}
				return e
			});
			var fi, pi, di = Jn ? an : Fn,
				gi = Pe(ri),
				mi = _r || function(t, e) {
					return Ka.setTimeout(t, e)
				},
				vi = Pe(ii),
				yi = (pi = (fi = tn(fi = function(t) {
					var i = [];
					return ya.test(t) && i.push(""), t.replace(ba, function(t, e, n, r) {
						i.push(n ? r.replace(Aa, "$1") : e || t)
					}), i
				}, function(t) {
					return 500 === pi.size && pi.clear(), t
				})).cache, fi),
				bi = at(function(t, e) {
					return on(t) ? O(t, I(e, 1, on, !0)) : []
				}),
				wi = at(function(t, e) {
					var n = Be(e);
					return on(n) && (n = Ss), on(t) ? O(t, I(e, 1, on, !0), ge(n, 2)) : []
				}),
				_i = at(function(t, e) {
					var n = Be(e);
					return on(n) && (n = Ss), on(t) ? O(t, I(e, 1, on, !0), Ss, n) : []
				}),
				xi = at(function(t) {
					var e = Qo(t, Ot);
					return e.length && e[0] === t[0] ? H(e) : []
				}),
				Ci = at(function(t) {
					var e = Be(t),
						n = Qo(t, Ot);
					return e === Be(n) ? e = Ss : n.pop(), n.length && n[0] === t[0] ? H(n, ge(e, 2)) : []
				}),
				ki = at(function(t) {
					var e = Be(t),
						n = Qo(t, Ot);
					return (e = "function" == typeof e ? e : Ss) && n.pop(), n.length && n[0] === t[0] ? H(n, Ss,
						e) : []
				}),
				Si = at(qe),
				Oi = le(function(t, e) {
					var n = null == t ? 0 : t.length,
						r = _(t, e);
					return it(t, Qo(e, function(t) {
						return xe(t, n) ? +t : t
					}).sort(Nt)), r
				}),
				Ei = at(function(t) {
					return bt(I(t, 1, on, !0))
				}),
				Ti = at(function(t) {
					var e = Be(t);
					return on(e) && (e = Ss), bt(I(t, 1, on, !0), ge(e, 2))
				}),
				Ai = at(function(t) {
					var e = "function" == typeof(e = Be(t)) ? e : Ss;
					return bt(I(t, 1, on, !0), Ss, e)
				}),
				Ii = at(function(t, e) {
					return on(t) ? O(t, e) : []
				}),
				ji = at(function(t) {
					return kt(Xo(t, on))
				}),
				Pi = at(function(t) {
					var e = Be(t);
					return on(e) && (e = Ss), kt(Xo(t, on), ge(e, 2))
				}),
				Ni = at(function(t) {
					var e = "function" == typeof(e = Be(t)) ? e : Ss;
					return kt(Xo(t, on), Ss, e)
				}),
				Di = at(Ue),
				Ri = at(function(t) {
					var e = t.length,
						e = "function" == typeof(e = 1 < e ? t[e - 1] : Ss) ? (t.pop(), e) : Ss;
					return Ge(t, e)
				}),
				Mi = le(function(e) {
					function t(t) {
						return _(t, e)
					}
					var n = e.length,
						r = n ? e[0] : 0,
						i = this.__wrapped__;
					return !(1 < n || this.__actions__.length) && i instanceof m && xe(r) ? ((i = i.slice(r, +r + (
						n ? 1 : 0))).__actions__.push({
						func: $e,
						args: [t],
						thisArg: Ss
					}), new g(i, this.__chain__).thru(function(t) {
						return n && !t.length && t.push(Ss), t
					})) : this.thru(t)
				}),
				Wi = Lt(function(t, e, n) {
					tr.call(t, n) ? ++t[n] : f(t, n, 1)
				}),
				Li = Vt(We),
				Fi = Vt(Le),
				Hi = Lt(function(t, e, n) {
					tr.call(t, n) ? t[n].push(e) : f(t, n, [e])
				}),
				Bi = at(function(t, e, n) {
					var r = -1,
						i = "function" == typeof e,
						o = rn(t) ? Hn(t.length) : [];
					return Zr(t, function(t) {
						o[++r] = i ? zo(e, t, n) : B(t, e, n)
					}), o
				}),
				qi = Lt(function(t, e, n) {
					f(t, n, e)
				}),
				zi = Lt(function(t, e, n) {
					t[n ? 0 : 1].push(e)
				}, function() {
					return [
						[],
						[]
					]
				}),
				Ui = at(function(t, e) {
					if (null == t) return [];
					var n = e.length;
					return 1 < n && Ce(t, e[0], e[1]) ? e = [] : 2 < n && Ce(e[0], e[1], e[2]) && (e = [e[0]]), et(
						t, I(e, 1), [])
				}),
				Gi = wr || function() {
					return Ka.Date.now()
				},
				Vi = at(function(t, e, n) {
					var r, i = 1;
					return n.length && (r = _s(n, de(Vi)), i |= 32), oe(t, i, e, n, r)
				}),
				$i = at(function(t, e, n) {
					var r, i = 3;
					return n.length && (r = _s(n, de($i)), i |= 32), oe(e, i, t, n, r)
				}),
				Xi = at(function(t, e) {
					return S(t, 1, e)
				}),
				Yi = at(function(t, e, n) {
					return S(t, wn(e) || 0, n)
				});
			tn.Cache = s;
			var Ki, Qi = oi(function(r, i) {
					var o = (i = 1 == i.length && io(i[0]) ? Qo(i[0], fs(ge())) : Qo(I(i, 1), fs(ge()))).length;
					return at(function(t) {
						for (var e = -1, n = Ir(t.length, o); ++e < n;) t[e] = i[e].call(this, t[e]);
						return zo(r, this, t)
					})
				}),
				Ji = at(function(t, e) {
					var n = _s(e, de(Ji));
					return oe(t, 32, Ss, e, n)
				}),
				Zi = at(function(t, e) {
					var n = _s(e, de(Zi));
					return oe(t, 64, Ss, e, n)
				}),
				to = le(function(t, e) {
					return oe(t, 256, Ss, Ss, Ss, e)
				}),
				eo = ee(W),
				no = ee(function(t, e) {
					return e <= t
				}),
				ro = q(function() {
					return arguments
				}()) ? q : function(t) {
					return hn(t) && tr.call(t, "callee") && !pr.call(t, "callee")
				},
				io = Hn.isArray,
				oo = Ja ? fs(Ja) : function(t) {
					return hn(t) && M(t) == Ys
				},
				so = Sr || Fn,
				ao = Za ? fs(Za) : function(t) {
					return hn(t) && M(t) == Ms
				},
				uo = tu ? fs(tu) : function(t) {
					return hn(t) && hi(t) == Hs
				},
				co = eu ? fs(eu) : function(t) {
					return hn(t) && M(t) == Us
				},
				lo = nu ? fs(nu) : function(t) {
					return hn(t) && hi(t) == Gs
				},
				ho = ru ? fs(ru) : function(t) {
					return hn(t) && cn(t.length) && !!Va[M(t)]
				},
				fo = ee(Y),
				po = ee(function(t, e) {
					return t <= e
				}),
				go = Ft(function(t, e) {
					if (Oe(e) || rn(e)) Wt(e, Sn(e), t);
					else
						for (var n in e) tr.call(e, n) && b(t, n, e[n])
				}),
				mo = Ft(function(t, e) {
					Wt(e, On(e), t)
				}),
				vo = Ft(function(t, e, n, r) {
					Wt(e, On(e), t, r)
				}),
				yo = Ft(function(t, e, n, r) {
					Wt(e, Sn(e), t, r)
				}),
				bo = le(_),
				wo = at(function(t) {
					return t.push(Ss, se), zo(vo, Ss, t)
				}),
				_o = at(function(t) {
					return t.push(Ss, ae), zo(Oo, Ss, t)
				}),
				xo = Yt(function(t, e, n) {
					t[e] = n
				}, Pn(Nn)),
				Co = Yt(function(t, e, n) {
					tr.call(t, e) ? t[e].push(n) : t[e] = [n]
				}, ge),
				ko = at(B),
				So = Ft(function(t, e, n) {
					Z(t, e, n)
				}),
				Oo = Ft(function(t, e, n, r) {
					Z(t, e, n, r)
				}),
				Eo = le(function(e, t) {
					var n = {};
					if (null == e) return n;
					var r = !1;
					t = Qo(t, function(t) {
						return t = Tt(t, e), r = r || 1 < t.length, t
					}), Wt(e, fe(e), n), r && (n = C(n, 7, ue));
					for (var i = t.length; i--;) wt(n, t[i]);
					return n
				}),
				To = le(function(t, e) {
					return null == t ? {} : nt(n = t, e, function(t, e) {
						return kn(n, e)
					});
					var n
				}),
				Ao = ie(Sn),
				Io = ie(On),
				jo = zt(function(t, e, n) {
					return e = e.toLowerCase(), t + (n ? An(e) : e)
				}),
				Po = zt(function(t, e, n) {
					return t + (n ? "-" : "") + e.toLowerCase()
				}),
				No = zt(function(t, e, n) {
					return t + (n ? " " : "") + e.toLowerCase()
				}),
				Do = qt("toLowerCase"),
				Ro = zt(function(t, e, n) {
					return t + (n ? "_" : "") + e.toLowerCase()
				}),
				Mo = zt(function(t, e, n) {
					return t + (n ? " " : "") + Lo(e)
				}),
				Wo = zt(function(t, e, n) {
					return t + (n ? " " : "") + e.toUpperCase()
				}),
				Lo = qt("toUpperCase"),
				Fo = at(function(t, e) {
					try {
						return zo(t, Ss, e)
					} catch (t) {
						return sn(t) ? t : new qn(t)
					}
				}),
				Kn = le(function(e, t) {
					return Go(t, function(t) {
						t = De(t), f(e, t, Vi(e[t], e))
					}), e
				}),
				Ho = $t(),
				ar = $t(!0),
				Bn = at(function(e, n) {
					return function(t) {
						return B(t, e, n)
					}
				}),
				e = at(function(e, n) {
					return function(t) {
						return B(e, t, n)
					}
				}),
				ur = Qt(Qo),
				Xr = Qt($o),
				br = Qt(es),
				Rr = te(),
				Wr = te(!0),
				Fr = Kt(function(t, e) {
					return t + e
				}, 0),
				Jn = re("ceil"),
				_r = Kt(function(t, e) {
					return t / e
				}, 1),
				ii = re("floor"),
				wr = Kt(function(t, e) {
					return t * e
				}, 1),
				oi = re("round"),
				Sr = Kt(function(t, e) {
					return t - e
				}, 0);
			return d.after = function(t, e) {
					if ("function" != typeof e) throw new Xn(Os);
					return t = yn(t),
						function() {
							if (--t < 1) return e.apply(this, arguments)
						}
				}, d.ary = Qe, d.assign = go, d.assignIn = mo, d.assignInWith = vo, d.assignWith = yo, d.at = bo, d
				.before = Je, d.bind = Vi, d.bindAll = Kn, d.bindKey = $i, d.castArray = function() {
					if (!arguments.length) return [];
					var t = arguments[0];
					return io(t) ? t : [t]
				}, d.chain = Ve, d.chunk = function(t, e, n) {
					e = (n ? Ce(t, e, n) : e === Ss) ? 1 : Ar(yn(e), 0);
					var r = null == t ? 0 : t.length;
					if (!r || e < 1) return [];
					for (var i = 0, o = 0, s = Hn(xr(r / e)); i < r;) s[o++] = ft(t, i, i += e);
					return s
				}, d.compact = function(t) {
					for (var e = -1, n = null == t ? 0 : t.length, r = 0, i = []; ++e < n;) {
						var o = t[e];
						o && (i[r++] = o)
					}
					return i
				}, d.concat = function() {
					var t = arguments.length;
					if (!t) return [];
					for (var e = Hn(t - 1), n = arguments[0], r = t; r--;) e[r - 1] = arguments[r];
					return Jo(io(n) ? Mt(n) : [n], I(e, 1))
				}, d.cond = function(r) {
					var i = null == r ? 0 : r.length,
						e = ge();
					return r = i ? Qo(r, function(t) {
						if ("function" != typeof t[1]) throw new Xn(Os);
						return [e(t[0]), t[1]]
					}) : [], at(function(t) {
						for (var e = -1; ++e < i;) {
							var n = r[e];
							if (zo(n[0], this, t)) return zo(n[1], this, t)
						}
					})
				}, d.conforms = function(t) {
					return e = C(t, 1), n = Sn(e),
						function(t) {
							return k(t, e, n)
						};
					var e, n
				}, d.constant = Pn, d.countBy = Wi, d.create = function(t, e) {
					return t = Qr(t), null == e ? t : w(t, e)
				}, d.curry = function t(e, n, r) {
					n = oe(e, 8, Ss, Ss, Ss, Ss, Ss, n = r ? Ss : n);
					return n.placeholder = t.placeholder, n
				}, d.curryRight = function t(e, n, r) {
					n = oe(e, 16, Ss, Ss, Ss, Ss, Ss, n = r ? Ss : n);
					return n.placeholder = t.placeholder, n
				}, d.debounce = Ze, d.defaults = wo, d.defaultsDeep = _o, d.defer = Xi, d.delay = Yi, d.difference = bi,
				d.differenceBy = wi, d.differenceWith = _i, d.drop = function(t, e, n) {
					var r = null == t ? 0 : t.length;
					return r ? ft(t, (e = n || e === Ss ? 1 : yn(e)) < 0 ? 0 : e, r) : []
				}, d.dropRight = function(t, e, n) {
					var r = null == t ? 0 : t.length;
					return r ? ft(t, 0, (e = r - (e = n || e === Ss ? 1 : yn(e))) < 0 ? 0 : e) : []
				}, d.dropRightWhile = function(t, e) {
					return t && t.length ? xt(t, ge(e, 3), !0, !0) : []
				}, d.dropWhile = function(t, e) {
					return t && t.length ? xt(t, ge(e, 3), !0) : []
				}, d.fill = function(t, e, n, r) {
					var i = null == t ? 0 : t.length;
					return i ? (n && "number" != typeof n && Ce(t, e, n) && (n = 0, r = i), function(t, e, n, r) {
						var i = t.length;
						for ((n = yn(n)) < 0 && (n = i < -n ? 0 : i + n), (r = r === Ss || i < r ? i : yn(r)) <
							0 && (r += i), r = r < n ? 0 : bn(r); n < r;) t[n++] = e;
						return t
					}(t, e, n, r)) : []
				}, d.filter = function(t, e) {
					return (io(t) ? Xo : A)(t, ge(e, 3))
				}, d.flatMap = function(t, e) {
					return I(Ke(t, e), 1)
				}, d.flatMapDeep = function(t, e) {
					return I(Ke(t, e), 1 / 0)
				}, d.flatMapDepth = function(t, e, n) {
					return n = n === Ss ? 1 : yn(n), I(Ke(t, e), n)
				}, d.flatten = Fe, d.flattenDeep = function(t) {
					return (null == t ? 0 : t.length) ? I(t, 1 / 0) : []
				}, d.flattenDepth = function(t, e) {
					return (null == t ? 0 : t.length) ? I(t, e = e === Ss ? 1 : yn(e)) : []
				}, d.flip = function(t) {
					return oe(t, 512)
				}, d.flow = Ho, d.flowRight = ar, d.fromPairs = function(t) {
					for (var e = -1, n = null == t ? 0 : t.length, r = {}; ++e < n;) {
						var i = t[e];
						r[i[0]] = i[1]
					}
					return r
				}, d.functions = function(t) {
					return null == t ? [] : N(t, Sn(t))
				}, d.functionsIn = function(t) {
					return null == t ? [] : N(t, On(t))
				}, d.groupBy = Hi, d.initial = function(t) {
					return (null == t ? 0 : t.length) ? ft(t, 0, -1) : []
				}, d.intersection = xi, d.intersectionBy = Ci, d.intersectionWith = ki, d.invert = xo, d.invertBy = Co,
				d.invokeMap = Bi, d.iteratee = Dn, d.keyBy = qi, d.keys = Sn, d.keysIn = On, d.map = Ke, d.mapKeys =
				function(t, r) {
					var i = {};
					return r = ge(r, 3), j(t, function(t, e, n) {
						f(i, r(t, e, n), t)
					}), i
				}, d.mapValues = function(t, r) {
					var i = {};
					return r = ge(r, 3), j(t, function(t, e, n) {
						f(i, e, r(t, e, n))
					}), i
				}, d.matches = function(t) {
					return Q(C(t, 1))
				}, d.matchesProperty = function(t, e) {
					return J(t, C(e, 1))
				}, d.memoize = tn, d.merge = So, d.mergeWith = Oo, d.method = Bn, d.methodOf = e, d.mixin = Rn, d
				.negate = en, d.nthArg = function(e) {
					return e = yn(e), at(function(t) {
						return tt(t, e)
					})
				}, d.omit = Eo, d.omitBy = function(t, e) {
					return En(t, en(ge(e)))
				}, d.once = function(t) {
					return Je(2, t)
				}, d.orderBy = function(t, e, n, r) {
					return null == t ? [] : (io(e) || (e = null == e ? [] : [e]), io(n = r ? Ss : n) || (n = null == n ?
						[] : [n]), et(t, e, n))
				}, d.over = ur, d.overArgs = Qi, d.overEvery = Xr, d.overSome = br, d.partial = Ji, d.partialRight = Zi,
				d.partition = zi, d.pick = To, d.pickBy = En, d.property = Wn, d.propertyOf = function(e) {
					return function(t) {
						return null == e ? Ss : D(e, t)
					}
				}, d.pull = Si, d.pullAll = qe, d.pullAllBy = function(t, e, n) {
					return t && t.length && e && e.length ? rt(t, e, ge(n, 2)) : t
				}, d.pullAllWith = function(t, e, n) {
					return t && t.length && e && e.length ? rt(t, e, Ss, n) : t
				}, d.pullAt = Oi, d.range = Rr, d.rangeRight = Wr, d.rearg = to, d.reject = function(t, e) {
					return (io(t) ? Xo : A)(t, en(ge(e, 3)))
				}, d.remove = function(t, e) {
					var n = [];
					if (!t || !t.length) return n;
					var r = -1,
						i = [],
						o = t.length;
					for (e = ge(e, 3); ++r < o;) {
						var s = t[r];
						e(s, r, t) && (n.push(s), i.push(r))
					}
					return it(t, i), n
				}, d.rest = function(t, e) {
					if ("function" != typeof t) throw new Xn(Os);
					return at(t, e = e === Ss ? e : yn(e))
				}, d.reverse = ze, d.sampleSize = function(t, e, n) {
					return e = (n ? Ce(t, e, n) : e === Ss) ? 1 : yn(e), (io(t) ? u : ct)(t, e)
				}, d.set = function(t, e, n) {
					return null == t ? t : lt(t, e, n)
				}, d.setWith = function(t, e, n, r) {
					return r = "function" == typeof r ? r : Ss, null == t ? t : lt(t, e, n, r)
				}, d.shuffle = function(t) {
					return (io(t) ? c : ht)(t)
				}, d.slice = function(t, e, n) {
					var r = null == t ? 0 : t.length;
					return r ? (n = n && "number" != typeof n && Ce(t, e, n) ? (e = 0, r) : (e = null == e ? 0 : yn(e),
						n === Ss ? r : yn(n)), ft(t, e, n)) : []
				}, d.sortBy = Ui, d.sortedUniq = function(t) {
					return t && t.length ? mt(t) : []
				}, d.sortedUniqBy = function(t, e) {
					return t && t.length ? mt(t, ge(e, 2)) : []
				}, d.split = function(t, e, n) {
					return n && "number" != typeof n && Ce(t, e, n) && (e = n = Ss), (n = n === Ss ? js : n >>> 0) ? (
						t = xn(t)) && ("string" == typeof e || null != e && !co(e)) && (!(e = yt(e)) && ys(t)) ? At(
						ks(t), 0, n) : t.split(e, n) : []
				}, d.spread = function(n, r) {
					if ("function" != typeof n) throw new Xn(Os);
					return r = null == r ? 0 : Ar(yn(r), 0), at(function(t) {
						var e = t[r],
							t = At(t, 0, r);
						return e && Jo(t, e), zo(n, this, t)
					})
				}, d.tail = function(t) {
					var e = null == t ? 0 : t.length;
					return e ? ft(t, 1, e) : []
				}, d.take = function(t, e, n) {
					return t && t.length ? ft(t, 0, (e = n || e === Ss ? 1 : yn(e)) < 0 ? 0 : e) : []
				}, d.takeRight = function(t, e, n) {
					var r = null == t ? 0 : t.length;
					return r ? ft(t, (e = r - (e = n || e === Ss ? 1 : yn(e))) < 0 ? 0 : e, r) : []
				}, d.takeRightWhile = function(t, e) {
					return t && t.length ? xt(t, ge(e, 3), !1, !0) : []
				}, d.takeWhile = function(t, e) {
					return t && t.length ? xt(t, ge(e, 3)) : []
				}, d.tap = function(t, e) {
					return e(t), t
				}, d.throttle = function(t, e, n) {
					var r = !0,
						i = !0;
					if ("function" != typeof t) throw new Xn(Os);
					return ln(n) && (r = "leading" in n ? !!n.leading : r, i = "trailing" in n ? !!n.trailing : i), Ze(
						t, e, {
							leading: r,
							maxWait: e,
							trailing: i
						})
				}, d.thru = $e, d.toArray = mn, d.toPairs = Ao, d.toPairsIn = Io, d.toPath = function(t) {
					return io(t) ? Qo(t, De) : gn(t) ? [t] : Mt(yi(xn(t)))
				}, d.toPlainObject = _n, d.transform = function(t, r, i) {
					var e, n = io(t),
						o = n || so(t) || ho(t);
					return r = ge(r, 4), null == i && (e = t && t.constructor, i = o ? n ? new e : [] : ln(t) && an(e) ?
						Qr(hr(t)) : {}), (o ? Go : j)(t, function(t, e, n) {
						return r(i, t, e, n)
					}), i
				}, d.unary = function(t) {
					return Qe(t, 1)
				}, d.union = Ei, d.unionBy = Ti, d.unionWith = Ai, d.uniq = function(t) {
					return t && t.length ? bt(t) : []
				}, d.uniqBy = function(t, e) {
					return t && t.length ? bt(t, ge(e, 2)) : []
				}, d.uniqWith = function(t, e) {
					return e = "function" == typeof e ? e : Ss, t && t.length ? bt(t, Ss, e) : []
				}, d.unset = function(t, e) {
					return null == t || wt(t, e)
				}, d.unzip = Ue, d.unzipWith = Ge, d.update = function(t, e, n) {
					return null == t ? t : _t(t, e, Et(n))
				}, d.updateWith = function(t, e, n, r) {
					return r = "function" == typeof r ? r : Ss, null == t ? t : _t(t, e, Et(n), r)
				}, d.values = Tn, d.valuesIn = function(t) {
					return null == t ? [] : ps(t, On(t))
				}, d.without = Ii, d.words = jn, d.wrap = function(t, e) {
					return Ji(Et(e), t)
				}, d.xor = ji, d.xorBy = Pi, d.xorWith = Ni, d.zip = Di, d.zipObject = function(t, e) {
					return St(t || [], e || [], b)
				}, d.zipObjectDeep = function(t, e) {
					return St(t || [], e || [], lt)
				}, d.zipWith = Ri, d.entries = Ao, d.entriesIn = Io, d.extend = mo, d.extendWith = vo, Rn(d, d), d.add =
				Fr, d.attempt = Fo, d.camelCase = jo, d.capitalize = An, d.ceil = Jn, d.clamp = function(t, e, n) {
					return n === Ss && (n = e, e = Ss), n !== Ss && (n = (n = wn(n)) == n ? n : 0), e !== Ss && (e = (
						e = wn(e)) == e ? e : 0), x(wn(t), e, n)
				}, d.clone = function(t) {
					return C(t, 4)
				}, d.cloneDeep = function(t) {
					return C(t, 5)
				}, d.cloneDeepWith = function(t, e) {
					return C(t, 5, e = "function" == typeof e ? e : Ss)
				}, d.cloneWith = function(t, e) {
					return C(t, 4, e = "function" == typeof e ? e : Ss)
				}, d.conformsTo = function(t, e) {
					return null == e || k(t, e, Sn(e))
				}, d.deburr = In, d.defaultTo = function(t, e) {
					return null == t || t != t ? e : t
				}, d.divide = _r, d.endsWith = function(t, e, n) {
					t = xn(t), e = yt(e);
					var r = t.length,
						r = n = n === Ss ? r : x(yn(n), 0, r);
					return 0 <= (n -= e.length) && t.slice(n, r) == e
				}, d.eq = nn, d.escape = function(t) {
					return (t = xn(t)) && fa.test(t) ? t.replace(la, ou) : t
				}, d.escapeRegExp = function(t) {
					return (t = xn(t)) && _a.test(t) ? t.replace(wa, "\\$&") : t
				}, d.every = function(t, e, n) {
					var r = io(t) ? $o : E;
					return n && Ce(t, e, n) && (e = Ss), r(t, ge(e, 3))
				}, d.find = Li, d.findIndex = We, d.findKey = function(t, e) {
					return ns(t, ge(e, 3), j)
				}, d.findLast = Fi, d.findLastIndex = Le, d.findLastKey = function(t, e) {
					return ns(t, ge(e, 3), P)
				}, d.floor = ii, d.forEach = Xe, d.forEachRight = Ye, d.forIn = function(t, e) {
					return null == t ? t : ei(t, ge(e, 3), On)
				}, d.forInRight = function(t, e) {
					return null == t ? t : ni(t, ge(e, 3), On)
				}, d.forOwn = function(t, e) {
					return t && j(t, ge(e, 3))
				}, d.forOwnRight = function(t, e) {
					return t && P(t, ge(e, 3))
				}, d.get = Cn, d.gt = eo, d.gte = no, d.has = function(t, e) {
					return null != t && be(t, e, L)
				}, d.hasIn = kn, d.head = He, d.identity = Nn, d.includes = function(t, e, n, r) {
					return t = rn(t) ? t : Tn(t), n = n && !r ? yn(n) : 0, r = t.length, n < 0 && (n = Ar(r + n, 0)),
						dn(t) ? n <= r && -1 < t.indexOf(e, n) : !!r && -1 < is(t, e, n)
				}, d.indexOf = function(t, e, n) {
					var r = null == t ? 0 : t.length;
					return r ? ((n = null == n ? 0 : yn(n)) < 0 && (n = Ar(r + n, 0)), is(t, e, n)) : -1
				}, d.inRange = function(t, e, n) {
					return e = vn(e), n === Ss ? (n = e, e = 0) : n = vn(n), (t = t = wn(t)) >= Ir(e = e, n = n) && t <
						Ar(e, n)
				}, d.invoke = ko, d.isArguments = ro, d.isArray = io, d.isArrayBuffer = oo, d.isArrayLike = rn, d
				.isArrayLikeObject = on, d.isBoolean = function(t) {
					return !0 === t || !1 === t || hn(t) && M(t) == Rs
				}, d.isBuffer = so, d.isDate = ao, d.isElement = function(t) {
					return hn(t) && 1 === t.nodeType && !pn(t)
				}, d.isEmpty = function(t) {
					if (null == t) return !0;
					if (rn(t) && (io(t) || "string" == typeof t || "function" == typeof t.splice || so(t) || ho(t) ||
							ro(t))) return !t.length;
					var e, n = hi(t);
					if (n == Hs || n == Gs) return !t.size;
					if (Oe(t)) return !$(t).length;
					for (e in t)
						if (tr.call(t, e)) return !1;
					return !0
				}, d.isEqual = function(t, e) {
					return z(t, e)
				}, d.isEqualWith = function(t, e, n) {
					var r = (n = "function" == typeof n ? n : Ss) ? n(t, e) : Ss;
					return r === Ss ? z(t, e, Ss, n) : !!r
				}, d.isError = sn, d.isFinite = function(t) {
					return "number" == typeof t && Or(t)
				}, d.isFunction = an, d.isInteger = un, d.isLength = cn, d.isMap = uo, d.isMatch = function(t, e) {
					return t === e || U(t, e, ve(e))
				}, d.isMatchWith = function(t, e, n) {
					return n = "function" == typeof n ? n : Ss, U(t, e, ve(e), n)
				}, d.isNaN = function(t) {
					return fn(t) && t != +t
				}, d.isNative = function(t) {
					if (di(t)) throw new qn("Unsupported core-js use. Try https://npms.io/search?q=ponyfill.");
					return G(t)
				}, d.isNil = function(t) {
					return null == t
				}, d.isNull = function(t) {
					return null === t
				}, d.isNumber = fn, d.isObject = ln, d.isObjectLike = hn, d.isPlainObject = pn, d.isRegExp = co, d
				.isSafeInteger = function(t) {
					return un(t) && -As <= t && t <= As
				}, d.isSet = lo, d.isString = dn, d.isSymbol = gn, d.isTypedArray = ho, d.isUndefined = function(t) {
					return t === Ss
				}, d.isWeakMap = function(t) {
					return hn(t) && hi(t) == Xs
				}, d.isWeakSet = function(t) {
					return hn(t) && "[object WeakSet]" == M(t)
				}, d.join = function(t, e) {
					return null == t ? "" : Er.call(t, e)
				}, d.kebabCase = Po, d.last = Be, d.lastIndexOf = function(t, e, n) {
					var r = null == t ? 0 : t.length;
					if (!r) return -1;
					var i = r;
					return n !== Ss && (i = (i = yn(n)) < 0 ? Ar(r + i, 0) : Ir(i, r - 1)), e == e ? function(t, e, n) {
						for (var r = n + 1; r--;)
							if (t[r] === e) return r;
						return r
					}(t, e, i) : rs(t, ss, i, !0)
				}, d.lowerCase = No, d.lowerFirst = Do, d.lt = fo, d.lte = po, d.max = function(t) {
					return t && t.length ? T(t, Nn, W) : Ss
				}, d.maxBy = function(t, e) {
					return t && t.length ? T(t, ge(e, 2), W) : Ss
				}, d.mean = function(t) {
					return as(t, Nn)
				}, d.meanBy = function(t, e) {
					return as(t, ge(e, 2))
				}, d.min = function(t) {
					return t && t.length ? T(t, Nn, Y) : Ss
				}, d.minBy = function(t, e) {
					return t && t.length ? T(t, ge(e, 2), Y) : Ss
				}, d.stubArray = Ln, d.stubFalse = Fn, d.stubObject = function() {
					return {}
				}, d.stubString = function() {
					return ""
				}, d.stubTrue = function() {
					return !0
				}, d.multiply = wr, d.nth = function(t, e) {
					return t && t.length ? tt(t, yn(e)) : Ss
				}, d.noConflict = function() {
					return Ka._ === this && (Ka._ = or), this
				}, d.noop = Mn, d.now = Gi, d.pad = function(t, e, n) {
					t = xn(t);
					var r = (e = yn(e)) ? Cs(t) : 0;
					return !e || e <= r ? t : Jt(Cr(r = (e - r) / 2), n) + t + Jt(xr(r), n)
				}, d.padEnd = function(t, e, n) {
					t = xn(t);
					var r = (e = yn(e)) ? Cs(t) : 0;
					return e && r < e ? t + Jt(e - r, n) : t
				}, d.padStart = function(t, e, n) {
					t = xn(t);
					var r = (e = yn(e)) ? Cs(t) : 0;
					return e && r < e ? Jt(e - r, n) + t : t
				}, d.parseInt = function(t, e, n) {
					return e = n || null == e ? 0 : e && +e, Pr(xn(t).replace(Ca, ""), e || 0)
				}, d.random = function(t, e, n) {
					var r;
					if (n && "boolean" != typeof n && Ce(t, e, n) && (e = n = Ss), n === Ss && ("boolean" == typeof e ?
							(n = e, e = Ss) : "boolean" == typeof t && (n = t, t = Ss)), t === Ss && e === Ss ? (t = 0,
							e = 1) : (t = vn(t), e === Ss ? (e = t, t = 0) : e = vn(e)), e < t && (r = t, t = e, e = r),
						n || t % 1 || e % 1) {
						n = Nr();
						return Ir(t + n * (e - t + Xa("1e-" + ((n + "").length - 1))), e)
					}
					return ot(t, e)
				}, d.reduce = function(t, e, n) {
					var r = io(t) ? Zo : cs,
						i = arguments.length < 3;
					return r(t, ge(e, 4), n, i, Zr)
				}, d.reduceRight = function(t, e, n) {
					var r = io(t) ? ts : cs,
						i = arguments.length < 3;
					return r(t, ge(e, 4), n, i, ti)
				}, d.repeat = function(t, e, n) {
					return e = (n ? Ce(t, e, n) : e === Ss) ? 1 : yn(e), st(xn(t), e)
				}, d.replace = function() {
					var t = arguments,
						e = xn(t[0]);
					return t.length < 3 ? e : e.replace(t[1], t[2])
				}, d.result = function(t, e, n) {
					var r = -1,
						i = (e = Tt(e, t)).length;
					for (i || (i = 1, t = Ss); ++r < i;) {
						var o = null == t ? Ss : t[De(e[r])];
						o === Ss && (r = i, o = n), t = an(o) ? o.call(t) : o
					}
					return t
				}, d.round = oi, d.runInContext = t, d.sample = function(t) {
					return (io(t) ? a : ut)(t)
				}, d.size = function(t) {
					if (null == t) return 0;
					if (rn(t)) return dn(t) ? Cs(t) : t.length;
					var e = hi(t);
					return e == Hs || e == Gs ? t.size : $(t).length
				}, d.snakeCase = Ro, d.some = function(t, e, n) {
					var r = io(t) ? es : pt;
					return n && Ce(t, e, n) && (e = Ss), r(t, ge(e, 3))
				}, d.sortedIndex = function(t, e) {
					return dt(t, e)
				}, d.sortedIndexBy = function(t, e, n) {
					return gt(t, e, ge(n, 2))
				}, d.sortedIndexOf = function(t, e) {
					var n = null == t ? 0 : t.length;
					if (n) {
						var r = dt(t, e);
						if (r < n && nn(t[r], e)) return r
					}
					return -1
				}, d.sortedLastIndex = function(t, e) {
					return dt(t, e, !0)
				}, d.sortedLastIndexBy = function(t, e, n) {
					return gt(t, e, ge(n, 2), !0)
				}, d.sortedLastIndexOf = function(t, e) {
					if (null == t ? 0 : t.length) {
						var n = dt(t, e, !0) - 1;
						if (nn(t[n], e)) return n
					}
					return -1
				}, d.startCase = Mo, d.startsWith = function(t, e, n) {
					return t = xn(t), n = null == n ? 0 : x(yn(n), 0, t.length), e = yt(e), t.slice(n, n + e.length) ==
						e
				}, d.subtract = Sr, d.sum = function(t) {
					return t && t.length ? ls(t, Nn) : 0
				}, d.sumBy = function(t, e) {
					return t && t.length ? ls(t, ge(e, 2)) : 0
				}, d.template = function(s, t, e) {
					var n = d.templateSettings;
					e && Ce(s, t, e) && (t = Ss), s = xn(s), t = vo({}, t, n, se);
					var a, u, r = Sn(n = vo({}, t.imports, n.imports, se)),
						i = ps(n, r),
						c = 0,
						n = t.interpolate || La,
						l = "__p += '",
						n = Vn((t.escape || La).source + "|" + n.source + "|" + (n === ga ? Ia : La).source + "|" + (t
							.evaluate || La).source + "|$", "g"),
						o = "//# sourceURL=" + ("sourceURL" in t ? t.sourceURL : "lodash.templateSources[" + ++Ga +
						"]") + "\n";
					if (s.replace(n, function(t, e, n, r, i, o) {
							return n = n || r, l += s.slice(c, o).replace(Fa, vs), e && (a = !0, l += "' +\n__e(" +
								e + ") +\n'"), i && (u = !0, l += "';\n" + i + ";\n__p += '"), n && (l +=
								"' +\n((__t = (" + n + ")) == null ? '' : __t) +\n'"), c = o + t.length, t
						}), l += "';\n", (t = t.variable) || (l = "with (obj) {\n" + l + "\n}\n"), l = (u ? l.replace(
							sa, "") : l).replace(aa, "$1").replace(ua, "$1;"), l = "function(" + (t || "obj") +
						") {\n" + (t ? "" : "obj || (obj = {});\n") + "var __t, __p = ''" + (a ? ", __e = _.escape" :
							"") + (u ?
							", __j = Array.prototype.join;\nfunction print() { __p += __j.call(arguments, '') }\n" :
							";\n") + l + "return __p\n}", (t = Fo(function() {
							return zn(r, o + "return " + l).apply(Ss, i)
						})).source = l, sn(t)) throw t;
					return t
				}, d.times = function(t, e) {
					if ((t = yn(t)) < 1 || As < t) return [];
					var n = js,
						r = Ir(t, js);
					for (e = ge(e), t -= js, r = hs(r, e); ++n < t;) e(n);
					return r
				}, d.toFinite = vn, d.toInteger = yn, d.toLength = bn, d.toLower = function(t) {
					return xn(t).toLowerCase()
				}, d.toNumber = wn, d.toSafeInteger = function(t) {
					return t ? x(yn(t), -As, As) : 0 === t ? t : 0
				}, d.toString = xn, d.toUpper = function(t) {
					return xn(t).toUpperCase()
				}, d.trim = function(t, e, n) {
					return (t = xn(t)) && (n || e === Ss) ? t.replace(xa, "") : t && (e = yt(e)) ? (t = ks(t), e = ks(
						e), At(t, gs(t, e), ms(t, e) + 1).join("")) : t
				}, d.trimEnd = function(t, e, n) {
					return (t = xn(t)) && (n || e === Ss) ? t.replace(ka, "") : t && (e = yt(e)) ? At(t = ks(t), 0, ms(
						t, ks(e)) + 1).join("") : t
				}, d.trimStart = function(t, e, n) {
					return (t = xn(t)) && (n || e === Ss) ? t.replace(Ca, "") : t && (e = yt(e)) ? At(t = ks(t), gs(t,
						ks(e))).join("") : t
				}, d.truncate = function(t, e) {
					var n, r = 30,
						i = "...";
					ln(e) && (n = "separator" in e ? e.separator : n, r = "length" in e ? yn(e.length) : r, i =
						"omission" in e ? yt(e.omission) : i);
					var o, e = (t = xn(t)).length;
					if (ys(t) && (e = (o = ks(t)).length), e <= r) return t;
					if ((e = r - Cs(i)) < 1) return i;
					if (r = o ? At(o, 0, e).join("") : t.slice(0, e), n === Ss) return r + i;
					if (o && (e += r.length - e), co(n)) {
						if (t.slice(e).search(n)) {
							var s, a = r;
							for (n.global || (n = Vn(n.source, xn(ja.exec(n)) + "g")), n.lastIndex = 0; s = n.exec(a);)
								var u = s.index;
							r = r.slice(0, u === Ss ? e : u)
						}
					} else t.indexOf(yt(n), e) == e || -1 < (e = r.lastIndexOf(n)) && (r = r.slice(0, e));
					return r + i
				}, d.unescape = function(t) {
					return (t = xn(t)) && ha.test(t) ? t.replace(ca, su) : t
				}, d.uniqueId = function(t) {
					var e = ++er;
					return xn(t) + e
				}, d.upperCase = Wo, d.upperFirst = Lo, d.each = Xe, d.eachRight = Ye, d.first = He, Rn(d, (Ki = {}, j(
					d,
					function(t, e) {
						tr.call(d.prototype, e) || (Ki[e] = t)
					}), Ki), {
					chain: !1
				}), d.VERSION = "4.17.4", Go(["bind", "bindKey", "curry", "curryRight", "partial", "partialRight"],
					function(t) {
						d[t].placeholder = d
					}), Go(["drop", "take"], function(n, r) {
					m.prototype[n] = function(t) {
						t = t === Ss ? 1 : Ar(yn(t), 0);
						var e = this.__filtered__ && !r ? new m(this) : this.clone();
						return e.__filtered__ ? e.__takeCount__ = Ir(t, e.__takeCount__) : e.__views__.push({
							size: Ir(t, js),
							type: n + (e.__dir__ < 0 ? "Right" : "")
						}), e
					}, m.prototype[n + "Right"] = function(t) {
						return this.reverse()[n](t).reverse()
					}
				}), Go(["filter", "map", "takeWhile"], function(t, e) {
					var n = e + 1,
						r = 1 == n || 3 == n;
					m.prototype[t] = function(t) {
						var e = this.clone();
						return e.__iteratees__.push({
							iteratee: ge(t, 3),
							type: n
						}), e.__filtered__ = e.__filtered__ || r, e
					}
				}), Go(["head", "last"], function(t, e) {
					var n = "take" + (e ? "Right" : "");
					m.prototype[t] = function() {
						return this[n](1).value()[0]
					}
				}), Go(["initial", "tail"], function(t, e) {
					var n = "drop" + (e ? "" : "Right");
					m.prototype[t] = function() {
						return this.__filtered__ ? new m(this) : this[n](1)
					}
				}), m.prototype.compact = function() {
					return this.filter(Nn)
				}, m.prototype.find = function(t) {
					return this.filter(t).head()
				}, m.prototype.findLast = function(t) {
					return this.reverse().find(t)
				}, m.prototype.invokeMap = at(function(e, n) {
					return "function" == typeof e ? new m(this) : this.map(function(t) {
						return B(t, e, n)
					})
				}), m.prototype.reject = function(t) {
					return this.filter(en(ge(t)))
				}, m.prototype.slice = function(t, e) {
					t = yn(t);
					var n = this;
					return n.__filtered__ && (0 < t || e < 0) ? new m(n) : (t < 0 ? n = n.takeRight(-t) : t && (n = n
						.drop(t)), e !== Ss && (n = (e = yn(e)) < 0 ? n.dropRight(-e) : n.take(e - t)), n)
				}, m.prototype.takeRightWhile = function(t) {
					return this.reverse().takeWhile(t).reverse()
				}, m.prototype.toArray = function() {
					return this.take(js)
				}, j(m.prototype, function(c, t) {
					var l = /^(?:filter|find|map|reject)|While$/.test(t),
						h = /^(?:head|last)$/.test(t),
						f = d[h ? "take" + ("last" == t ? "Right" : "") : t],
						p = h || /^find/.test(t);
					f && (d.prototype[t] = function() {
						function t(t) {
							return t = f.apply(d, Jo([t], n)), h && s ? t[0] : t
						}
						var e = this.__wrapped__,
							n = h ? [1] : arguments,
							r = e instanceof m,
							i = n[0],
							o = r || io(e);
						o && l && "function" == typeof i && 1 != i.length && (r = o = !1);
						var s = this.__chain__,
							a = !!this.__actions__.length,
							i = p && !s,
							a = r && !a;
						if (p || !o) return i && a ? c.apply(this, n) : (u = this.thru(t), i ? h ? u
						.value()[0] : u.value() : u);
						e = a ? e : new m(this);
						var u = c.apply(e, n);
						return u.__actions__.push({
							func: $e,
							args: [t],
							thisArg: Ss
						}), new g(u, s)
					})
				}), Go(["pop", "push", "shift", "sort", "splice", "unshift"], function(t) {
					var n = Yn[t],
						r = /^(?:push|sort|unshift)$/.test(t) ? "tap" : "thru",
						i = /^(?:pop|shift)$/.test(t);
					d.prototype[t] = function() {
						var e = arguments;
						if (!i || this.__chain__) return this[r](function(t) {
							return n.apply(io(t) ? t : [], e)
						});
						var t = this.value();
						return n.apply(io(t) ? t : [], e)
					}
				}), j(m.prototype, function(t, e) {
					var n, r = d[e];
					r && (n = r.name + "", (qr[n] || (qr[n] = [])).push({
						name: e,
						func: r
					}))
				}), qr[Xt(Ss, 2).name] = [{
					name: "wrapper",
					func: Ss
				}], m.prototype.clone = function() {
					var t = new m(this.__wrapped__);
					return t.__actions__ = Mt(this.__actions__), t.__dir__ = this.__dir__, t.__filtered__ = this
						.__filtered__, t.__iteratees__ = Mt(this.__iteratees__), t.__takeCount__ = this.__takeCount__, t
						.__views__ = Mt(this.__views__), t
				}, m.prototype.reverse = function() {
					var t;
					return this.__filtered__ ? ((t = new m(this)).__dir__ = -1, t.__filtered__ = !0) : (t = this
					.clone()).__dir__ *= -1, t
				}, m.prototype.value = function() {
					var t = this.__wrapped__.value(),
						e = this.__dir__,
						n = io(t),
						r = e < 0,
						i = n ? t.length : 0,
						o = function(t, e, n) {
							for (var r = -1, i = n.length; ++r < i;) {
								var o = n[r],
									s = o.size;
								switch (o.type) {
									case "drop":
										t += s;
										break;
									case "dropRight":
										e -= s;
										break;
									case "take":
										e = Ir(e, t + s);
										break;
									case "takeRight":
										t = Ar(t, e - s)
								}
							}
							return {
								start: t,
								end: e
							}
						}(0, i, this.__views__),
						s = o.start,
						a = (o = o.end) - s,
						u = r ? o : s - 1,
						c = this.__iteratees__,
						l = c.length,
						h = 0,
						f = Ir(a, this.__takeCount__);
					if (!n || !r && i == a && f == a) return Ct(t, this.__actions__);
					var p = [];
					t: for (; a-- && h < f;) {
						for (var d = -1, g = t[u += e]; ++d < l;) {
							var m = c[d],
								v = m.iteratee,
								m = m.type,
								v = v(g);
							if (2 == m) g = v;
							else if (!v) {
								if (1 == m) continue t;
								break t
							}
						}
						p[h++] = g
					}
					return p
				}, d.prototype.at = Mi, d.prototype.chain = function() {
					return Ve(this)
				}, d.prototype.commit = function() {
					return new g(this.value(), this.__chain__)
				}, d.prototype.next = function() {
					this.__values__ === Ss && (this.__values__ = mn(this.value()));
					var t = this.__index__ >= this.__values__.length;
					return {
						done: t,
						value: t ? Ss : this.__values__[this.__index__++]
					}
				}, d.prototype.plant = function(t) {
					for (var e, n = this; n instanceof o;) {
						var r = Me(n);
						r.__index__ = 0, r.__values__ = Ss, e ? i.__wrapped__ = r : e = r;
						var i = r,
							n = n.__wrapped__
					}
					return i.__wrapped__ = t, e
				}, d.prototype.reverse = function() {
					var t = this.__wrapped__;
					if (t instanceof m) {
						t = t;
						return this.__actions__.length && (t = new m(this)), (t = t.reverse()).__actions__.push({
							func: $e,
							args: [ze],
							thisArg: Ss
						}), new g(t, this.__chain__)
					}
					return this.thru(ze)
				}, d.prototype.toJSON = d.prototype.valueOf = d.prototype.value = function() {
					return Ct(this.__wrapped__, this.__actions__)
				}, d.prototype.first = d.prototype.head, mr && (d.prototype[mr] = function() {
					return this
				}), d
		}();
	"function" == typeof define && "object" == typeof define.amd && define.amd ? (Ka._ = au, define(function() {
		return au
	})) : n ? ((n.exports = au)._ = au, s._ = au) : Ka._ = au
}.call(this),
	function(t, e) {
		"object" == typeof exports ? module.exports = e() : "function" == typeof define && define.amd ? define(e) : t
			.jStat = e()
	}(this, function() {
		var p, d, _, x, m, g, a, u, i, e, c, l, h, s, n, f = function(a, u) {
			var e = Array.prototype.concat,
				t = Array.prototype.slice,
				n = Object.prototype.toString;

			function c(t, e) {
				e = e < t ? t : e;
				return a.pow(10, 17 - ~~(a.log(0 < e ? e : -e) * a.LOG10E))
			}
			var l = Array.isArray || function(t) {
				return "[object Array]" === n.call(t)
			};

			function h(t) {
				return "[object Function]" === n.call(t)
			}

			function f(t) {
				return "number" == typeof t && t - t == 0
			}

			function p() {
				return new p._init(arguments)
			}

			function r() {
				return 0
			}

			function i() {
				return 1
			}

			function o(t, e) {
				return t === e ? 1 : 0
			}

			function s(t, e, n, r) {
				var i, o = [],
					s = t.length;
				if (e === u && n === u && r === u) return p.copy(t);
				if (r = r || 1, (e = 0 <= (e = e || 0) ? e : s + e) === (n = 0 <= (n = n || t.length) ? n : s +
						n) || 0 === r) return [];
				if (e < n && r < 0) return [];
				if (n < e && 0 < r) return [];
				if (0 < r)
					for (i = e; i < n; i += r) o.push(t[i]);
				else
					for (i = e; n < i; i += r) o.push(t[i]);
				return o
			}
			p.fn = p.prototype, p._init = function(t) {
				if (l(t[0]))
					if (l(t[0][0])) {
						h(t[1]) && (t[0] = p.map(t[0], t[1]));
						for (var e = 0; e < t[0].length; e++) this[e] = t[0][e];
						this.length = t[0].length
					} else this[0] = h(t[1]) ? p.map(t[0], t[1]) : t[0], this.length = 1;
				else if (f(t[0])) this[0] = p.seq.apply(null, t), this.length = 1;
				else {
					if (t[0] instanceof p) return p(t[0].toArray());
					this[0] = [], this.length = 1
				}
				return this
			}, p._init.prototype = p.prototype, (p._init.constructor = p).utils = {
				calcRdx: c,
				isArray: l,
				isFunction: h,
				isNumber: f,
				toVector: function(t) {
					return e.apply([], t)
				}
			}, p._random_fn = a.random, p.setRandom = function(t) {
				if ("function" != typeof t) throw new TypeError("fn is not a function");
				p._random_fn = t
			}, p.extend = function(t) {
				var e, n;
				if (1 === arguments.length) {
					for (n in t) p[n] = t[n];
					return this
				}
				for (e = 1; e < arguments.length; e++)
					for (n in arguments[e]) t[n] = arguments[e][n];
				return t
			}, p.rows = function(t) {
				return t.length || 1
			}, p.cols = function(t) {
				return t[0].length || 1
			}, p.dimensions = function(t) {
				return {
					rows: p.rows(t),
					cols: p.cols(t)
				}
			}, p.row = function(e, t) {
				return l(t) ? t.map(function(t) {
					return p.row(e, t)
				}) : e[t]
			}, p.rowa = function(t, e) {
				return p.row(t, e)
			}, p.col = function(r, t) {
				if (l(t)) {
					var i = p.arange(r.length).map(function() {
						return new Array(t.length)
					});
					return t.forEach(function(e, n) {
						p.arange(r.length).forEach(function(t) {
							i[t][n] = r[t][e]
						})
					}), i
				}
				for (var e = new Array(r.length), n = 0; n < r.length; n++) e[n] = [r[n][t]];
				return e
			}, p.cola = function(t, e) {
				return p.col(t, e).map(function(t) {
					return t[0]
				})
			}, p.diag = function(t) {
				for (var e = p.rows(t), n = new Array(e), r = 0; r < e; r++) n[r] = [t[r][r]];
				return n
			}, p.antidiag = function(t) {
				for (var e = p.rows(t) - 1, n = new Array(e), r = 0; 0 <= e; e--, r++) n[r] = [t[r][e]];
				return n
			}, p.transpose = function(t) {
				var e, n, r, i, o, s = [];
				for (l(t[0]) || (t = [t]), n = t.length, r = t[0].length, o = 0; o < r; o++) {
					for (e = new Array(n), i = 0; i < n; i++) e[i] = t[i][o];
					s.push(e)
				}
				return 1 === s.length ? s[0] : s
			}, p.map = function(t, e, n) {
				var r, i, o, s, a;
				for (l(t[0]) || (t = [t]), i = t.length, o = t[0].length, s = n ? t : new Array(i), r =
					0; r < i; r++)
					for (s[r] || (s[r] = new Array(o)), a = 0; a < o; a++) s[r][a] = e(t[r][a], r, a);
				return 1 === s.length ? s[0] : s
			}, p.cumreduce = function(t, e, n) {
				var r, i, o, s, a;
				for (l(t[0]) || (t = [t]), i = t.length, o = t[0].length, s = n ? t : new Array(i), r =
					0; r < i; r++)
					for (s[r] || (s[r] = new Array(o)), 0 < o && (s[r][0] = t[r][0]), a = 1; a < o; a++) s[
						r][a] = e(s[r][a - 1], t[r][a]);
				return 1 === s.length ? s[0] : s
			}, p.alter = function(t, e) {
				return p.map(t, e, !0)
			}, p.create = function(t, e, n) {
				var r, i, o = new Array(t);
				for (h(e) && (n = e, e = t), r = 0; r < t; r++)
					for (o[r] = new Array(e), i = 0; i < e; i++) o[r][i] = n(r, i);
				return o
			}, p.zeros = function(t, e) {
				return f(e) || (e = t), p.create(t, e, r)
			}, p.ones = function(t, e) {
				return f(e) || (e = t), p.create(t, e, i)
			}, p.rand = function(t, e) {
				return f(e) || (e = t), p.create(t, e, p._random_fn)
			}, p.identity = function(t, e) {
				return f(e) || (e = t), p.create(t, e, o)
			}, p.symmetric = function(t) {
				var e, n, r = t.length;
				if (t.length !== t[0].length) return !1;
				for (e = 0; e < r; e++)
					for (n = 0; n < r; n++)
						if (t[n][e] !== t[e][n]) return !1;
				return !0
			}, p.clear = function(t) {
				return p.alter(t, r)
			}, p.seq = function(t, e, n, r) {
				h(r) || (r = !1);
				for (var i = [], o = c(t, e), s = (e * o - t * o) / ((n - 1) * o), a = t, u = 0; a <= e &&
					u < n; a = (t * o + s * o * ++u) / o) i.push(r ? r(a, u) : a);
				return i
			}, p.arange = function(t, e, n) {
				var r, i = [];
				if (n = n || 1, e === u && (e = t, t = 0), t === e || 0 === n) return [];
				if (t < e && n < 0) return [];
				if (e < t && 0 < n) return [];
				if (0 < n)
					for (r = t; r < e; r += n) i.push(r);
				else
					for (r = t; e < r; r += n) i.push(r);
				return i
			}, p.slice = function(t, e) {
				var n, r;
				return f((e = e || {}).row) ? f(e.col) ? t[e.row][e.col] : s(p.rowa(t, e.row), (n = e.col ||
				{}).start, n.end, n.step) : f(e.col) ? s(p.cola(t, e.col), (r = e.row || {}).start, r
					.end, r.step) : (r = e.row || {}, n = e.col || {}, s(t, r.start, r.end, r.step).map(
					function(t) {
						return s(t, n.start, n.end, n.step)
					}))
			}, p.sliceAssign = function(i, t, o) {
				var e, n;
				if (f(t.row)) {
					if (f(t.col)) return i[t.row][t.col] = o;
					t.col = t.col || {}, t.col.start = t.col.start || 0, t.col.end = t.col.end || i[0]
						.length, t.col.step = t.col.step || 1, e = p.arange(t.col.start, a.min(i.length, t
							.col.end), t.col.step);
					var r = t.row;
					return e.forEach(function(t, e) {
						i[r][t] = o[e]
					}), i
				}
				if (f(t.col)) {
					t.row = t.row || {}, t.row.start = t.row.start || 0, t.row.end = t.row.end || i.length,
						t.row.step = t.row.step || 1, n = p.arange(t.row.start, a.min(i[0].length, t.row
							.end), t.row.step);
					var s = t.col;
					return n.forEach(function(t, e) {
						i[t][s] = o[e]
					}), i
				}
				return o[0].length === u && (o = [o]), t.row.start = t.row.start || 0, t.row.end = t.row
					.end || i.length, t.row.step = t.row.step || 1, t.col.start = t.col.start || 0, t.col
					.end = t.col.end || i[0].length, t.col.step = t.col.step || 1, n = p.arange(t.row.start,
						a.min(i.length, t.row.end), t.row.step), e = p.arange(t.col.start, a.min(i[0]
						.length, t.col.end), t.col.step), n.forEach(function(n, r) {
						e.forEach(function(t, e) {
							i[n][t] = o[r][e]
						})
					}), i
			}, p.diagonal = function(t) {
				var n = p.zeros(t.length, t.length);
				return t.forEach(function(t, e) {
					n[e][e] = t
				}), n
			}, p.copy = function(t) {
				return t.map(function(t) {
					return f(t) ? t : t.map(function(t) {
						return t
					})
				})
			};
			var d = p.prototype;
			return d.length = 0, d.push = Array.prototype.push, d.sort = Array.prototype.sort, d.splice = Array
				.prototype.splice, d.slice = Array.prototype.slice, d.toArray = function() {
					return 1 < this.length ? t.call(this) : t.call(this)[0]
				}, d.map = function(t, e) {
					return p(p.map(this, t, e))
				}, d.cumreduce = function(t, e) {
					return p(p.cumreduce(this, t, e))
				}, d.alter = function(t) {
					return p.alter(this, t), this
				},
				function(t) {
					for (var e = 0; e < t.length; e++) ! function(r) {
						d[r] = function(t) {
							var e, n = this;
							return t ? (setTimeout(function() {
								t.call(n, d[r].call(n))
							}), this) : (e = p[r](this), l(e) ? p(e) : e)
						}
					}(t[e])
				}("transpose clear symmetric rows cols dimensions diag antidiag".split(" ")),
				function(t) {
					for (var e = 0; e < t.length; e++) ! function(r) {
						d[r] = function(t, e) {
							var n = this;
							return e ? (setTimeout(function() {
								e.call(n, d[r].call(n, t))
							}), this) : p(p[r](this, t))
						}
					}(t[e])
				}("row col".split(" ")),
				function(t) {
					for (var e = 0; e < t.length; e++) ! function(t) {
						d[t] = function() {
							return p(p[t].apply(null, arguments))
						}
					}(t[e])
				}("create zeros ones rand identity".split(" ")), p
		}(Math);

		function o(t, e, n, r) {
			for (var i, o = 0, s = 1, a = 1, u = 1, c = 0, l = 0; x.abs((a - l) / a) > r;) s = u + (i = -(e + c) * (
				e + n + c) * t / (e + 2 * c) / (e + 2 * c + 1)) * s, a = (o = (l = a) + i * o) + (i = (c += 1) *
				(n - c) * t / (e + 2 * c - 1) / (e + 2 * c)) * a, o /= u = s + i * u, s /= u, a /= u, u = 1;
			return a / e
		}

		function v(t, e, n) {
			var r = [.9815606342467192, .9041172563704749, .7699026741943047, .5873179542866175, .3678314989981802,
					.1252334085114689
				],
				i = [.04717533638651183, .10693932599531843, .16007832854334622, .20316742672306592,
					.2334925365383548, .24914704581340277
				],
				o = .5 * t;
			if (8 <= o) return 1;
			for (var s = (s = 2 * _.normal.cdf(o, 0, 1, 1, 0) - 1) >= x.exp(-50 / n) ? x.pow(s, n) : 0, a = 3 < t ?
					2 : 3, u = o, c = (8 - o) / a, l = u + c, h = 0, f = n - 1, p = 1; p <= a; p++) {
				for (var d = 0, g = .5 * (l + u), m = .5 * (l - u), v = 1; v <= 12; v++) {
					var y, b = 6 < v ? r[(y = 12 - v + 1) - 1] : -r[(y = v) - 1],
						w = g + m * b,
						b = w * w;
					if (60 < b) break;
					w = .5 * (2 * _.normal.cdf(w, 0, 1, 1, 0)) - .5 * (2 * _.normal.cdf(w, t, 1, 1, 0));
					w >= x.exp(-30 / f) && (d += i[y - 1] * x.exp(-.5 * b) * x.pow(w, f))
				}
				h += d *= 2 * m * n / x.sqrt(2 * x.PI), u = l, l += c
			}
			return (s += h) <= x.exp(-30 / e) ? 0 : 1 <= (s = x.pow(s, e)) ? 1 : s
		}

		function y(t) {
			return e(t) || t instanceof m
		}

		function b(t, e, n, r) {
			if (1 < t || 1 < n || t <= 0 || n <= 0) throw new Error(
				"Proportions should be greater than 0 and less than 1");
			var i = (t * e + n * r) / (e + r);
			return (t - n) / l.sqrt(i * (1 - i) * (1 / e + 1 / r))
		}

		function w(t, e) {
			var n = t.length,
				r = e[0].length - 1,
				i = n - r - 1,
				o = f.lstsq(e, t),
				s = f.multiply(e, o.map(function(t) {
					return [t]
				})).map(function(t) {
					return t[0]
				}),
				a = f.subtract(t, s),
				u = f.mean(t),
				c = f.sum(s.map(function(t) {
					return Math.pow(t - u, 2)
				})),
				l = f.sum(t.map(function(t, e) {
					return Math.pow(t - s[e], 2)
				})),
				h = c + l;
			return {
				exog: e,
				endog: t,
				nobs: n,
				df_model: r,
				df_resid: i,
				coef: o,
				predict: s,
				resid: a,
				ybar: u,
				SST: h,
				SSE: c,
				SSR: l,
				R2: c / h
			}
		}

		function C(e) {
			var n, r, t = (n = e.exog, r = n[0].length, f.arange(r).map(function(e) {
					var t = f.arange(r).filter(function(t) {
						return t !== e
					});
					return w(f.col(n, e).map(function(t) {
						return t[0]
					}), f.col(n, t))
				})),
				i = Math.sqrt(e.SSR / e.df_resid),
				o = t.map(function(t) {
					var e = t.SST,
						t = t.R2;
					return i / Math.sqrt(e * (1 - t))
				}),
				s = e.coef.map(function(t, e) {
					return +t / o[e]
				}),
				a = s.map(function(t) {
					t = f.studentt.cdf(t, e.df_resid);
					return 2 * (.5 < t ? 1 - t : t)
				}),
				u = f.studentt.inv(.975, e.df_resid),
				t = e.coef.map(function(t, e) {
					e = u * o[e];
					return [t - e, t + e]
				});
			return {
				se: o,
				t: s,
				p: a,
				sigmaHat: i,
				interval95: t
			}
		}
		return function(u, l) {
				var c = u.utils.isFunction;

				function h(t, e) {
					return t - e
				}

				function f(t, e, n) {
					return l.max(e, l.min(t, n))
				}
				u.sum = function(t) {
					for (var e = 0, n = t.length; 0 <= --n;) e += t[n];
					return e
				}, u.sumsqrd = function(t) {
					for (var e = 0, n = t.length; 0 <= --n;) e += t[n] * t[n];
					return e
				}, u.sumsqerr = function(t) {
					for (var e, n = u.mean(t), r = 0, i = t.length; 0 <= --i;) r += (e = t[i] - n) * e;
					return r
				}, u.sumrow = function(t) {
					for (var e = 0, n = t.length; 0 <= --n;) e += t[n];
					return e
				}, u.product = function(t) {
					for (var e = 1, n = t.length; 0 <= --n;) e *= t[n];
					return e
				}, u.min = function(t) {
					for (var e = t[0], n = 0; ++n < t.length;) t[n] < e && (e = t[n]);
					return e
				}, u.max = function(t) {
					for (var e = t[0], n = 0; ++n < t.length;) t[n] > e && (e = t[n]);
					return e
				}, u.unique = function(t) {
					for (var e = {}, n = [], r = 0; r < t.length; r++) e[t[r]] || (e[t[r]] = !0, n.push(t[r]));
					return n
				}, u.mean = function(t) {
					return u.sum(t) / t.length
				}, u.meansqerr = function(t) {
					return u.sumsqerr(t) / t.length
				}, u.geomean = function(t) {
					return l.pow(u.product(t), 1 / t.length)
				}, u.median = function(t) {
					var e = t.length,
						t = t.slice().sort(h);
					return 1 & e ? t[e / 2 | 0] : (t[e / 2 - 1] + t[e / 2]) / 2
				}, u.cumsum = function(t) {
					return u.cumreduce(t, function(t, e) {
						return t + e
					})
				}, u.cumprod = function(t) {
					return u.cumreduce(t, function(t, e) {
						return t * e
					})
				}, u.diff = function(t) {
					for (var e = [], n = t.length, r = 1; r < n; r++) e.push(t[r] - t[r - 1]);
					return e
				}, u.rank = function(t) {
					for (var e = [], n = {}, r = 0; r < t.length; r++) n[a = t[r]] ? n[a]++ : (n[a] = 1, e.push(
						a));
					var i = e.sort(h),
						o = {},
						s = 1;
					for (r = 0; r < i.length; r++) {
						var a, u = n[a = i[r]],
							c = (s + (s + u - 1)) / 2;
						o[a] = c, s += u
					}
					return t.map(function(t) {
						return o[t]
					})
				}, u.mode = function(t) {
					for (var e = t.length, n = t.slice().sort(h), r = 1, i = 0, o = 0, s = [], a = 0; a <
						e; a++) n[a] === n[a + 1] ? r++ : (i < r ? (s = [n[a]], i = r, o = 0) : r === i && (s
						.push(n[a]), o++), r = 1);
					return 0 === o ? s[0] : s
				}, u.range = function(t) {
					return u.max(t) - u.min(t)
				}, u.variance = function(t, e) {
					return u.sumsqerr(t) / (t.length - (e ? 1 : 0))
				}, u.pooledvariance = function(t) {
					return t.reduce(function(t, e) {
						return t + u.sumsqerr(e)
					}, 0) / (t.reduce(function(t, e) {
						return t + e.length
					}, 0) - t.length)
				}, u.deviation = function(t) {
					for (var e = u.mean(t), n = t.length, r = new Array(n), i = 0; i < n; i++) r[i] = t[i] - e;
					return r
				}, u.stdev = function(t, e) {
					return l.sqrt(u.variance(t, e))
				}, u.pooledstdev = function(t) {
					return l.sqrt(u.pooledvariance(t))
				}, u.meandev = function(t) {
					for (var e = u.mean(t), n = [], r = t.length - 1; 0 <= r; r--) n.push(l.abs(t[r] - e));
					return u.mean(n)
				}, u.meddev = function(t) {
					for (var e = u.median(t), n = [], r = t.length - 1; 0 <= r; r--) n.push(l.abs(t[r] - e));
					return u.median(n)
				}, u.coeffvar = function(t) {
					return u.stdev(t) / u.mean(t)
				}, u.quartiles = function(t) {
					var e = t.length,
						t = t.slice().sort(h);
					return [t[l.round(e / 4) - 1], t[l.round(e / 2) - 1], t[l.round(3 * e / 4) - 1]]
				}, u.quantiles = function(t, e, n, r) {
					var i, o, s, a = t.slice().sort(h),
						u = [e.length],
						c = t.length;
					for (void 0 === n && (n = 3 / 8), void 0 === r && (r = 3 / 8), i = 0; i < e.length; i++) s =
						c * (o = e[i]) + (n + o * (1 - n - r)), o = l.floor(f(s, 1, c - 1)), s = f(s - o, 0, 1),
						u[i] = (1 - s) * a[o - 1] + s * a[o];
					return u
				}, u.percentile = function(t, e, n) {
					t = t.slice().sort(h), e = e * (t.length + (n ? 1 : -1)) + (n ? 0 : 1), n = parseInt(e),
						e -= n;
					return n + 1 < t.length ? t[n - 1] + e * (t[n] - t[n - 1]) : t[n - 1]
				}, u.percentileOfScore = function(t, e, n) {
					for (var r, i = 0, o = t.length, s = "strict" === n ? !0 : !1, a = 0; a < o; a++) r = t[a],
						(s && r < e || !s && r <= e) && i++;
					return i / o
				}, u.histogram = function(t, e) {
					e = e || 4;
					for (var n = u.min(t), r = (u.max(t) - n) / e, i = t.length, o = [], s = 0; s < e; s++) o[
						s] = 0;
					for (s = 0; s < i; s++) o[l.min(l.floor((t[s] - n) / r), e - 1)] += 1;
					return o
				}, u.covariance = function(t, e) {
					for (var n = u.mean(t), r = u.mean(e), i = t.length, o = new Array(i), s = 0; s < i; s++) o[
						s] = (t[s] - n) * (e[s] - r);
					return u.sum(o) / (i - 1)
				}, u.corrcoeff = function(t, e) {
					return u.covariance(t, e) / u.stdev(t, 1) / u.stdev(e, 1)
				}, u.spearmancoeff = function(t, e) {
					return t = u.rank(t), e = u.rank(e), u.corrcoeff(t, e)
				}, u.stanMoment = function(t, e) {
					for (var n = u.mean(t), r = u.stdev(t), i = t.length, o = 0, s = 0; s < i; s++) o += l.pow((
						t[s] - n) / r, e);
					return o / t.length
				}, u.skewness = function(t) {
					return u.stanMoment(t, 3)
				}, u.kurtosis = function(t) {
					return u.stanMoment(t, 4) - 3
				};
				var p = u.prototype;
				! function(t) {
					for (var e = 0; e < t.length; e++) ! function(o) {
						p[o] = function(t, e) {
							var n = [],
								r = 0,
								i = this;
							if (c(t) && (e = t, t = !1), e) return setTimeout(function() {
								e.call(i, p[o].call(i, t))
							}), this;
							if (1 < this.length) {
								for (i = !0 === t ? this : this.transpose(); r < i.length; r++) n[r] = u[o](
									i[r]);
								return n
							}
							return u[o](this[0], t)
						}
					}(t[e])
				}("cumsum cumprod".split(" ")),
				function(t) {
					for (var e = 0; e < t.length; e++) ! function(o) {
						p[o] = function(t, e) {
							var n = [],
								r = 0,
								i = this;
							if (c(t) && (e = t, t = !1), e) return setTimeout(function() {
								e.call(i, p[o].call(i, t))
							}), this;
							if (1 < this.length) {
								for ("sumrow" !== o && (i = !0 === t ? this : this.transpose()); r < i
									.length; r++) n[r] = u[o](i[r]);
								return !0 === t ? u[o](u.utils.toVector(n)) : n
							}
							return u[o](this[0], t)
						}
					}(t[e])
				}("sum sumsqrd sumsqerr sumrow product min max unique mean meansqerr geomean median diff rank mode range variance deviation stdev meandev meddev coeffvar quartiles histogram skewness kurtosis"
					.split(" ")),
				function(t) {
					for (var e = 0; e < t.length; e++) ! function(a) {
						p[a] = function() {
							var t, e = [],
								n = 0,
								r = this,
								i = Array.prototype.slice.call(arguments);
							if (c(i[i.length - 1])) {
								t = i[i.length - 1];
								var o = i.slice(0, i.length - 1);
								return setTimeout(function() {
									t.call(r, p[a].apply(r, o))
								}), this
							}
							t = void 0;
							var s = function(t) {
								return u[a].apply(r, [t].concat(i))
							};
							if (1 < this.length) {
								for (r = r.transpose(); n < r.length; n++) e[n] = s(r[n]);
								return e
							}
							return s(this[0])
						}
					}(t[e])
				}("quantiles percentileOfScore".split(" "))
			}(f, Math), p = f, d = Math, p.gammaln = function(t) {
				var e, n, r = 0,
					i = [76.18009172947146, -86.50532032941678, 24.01409824083091, -1.231739572450155,
						.001208650973866179, -5395239384953e-18
					],
					o = 1.000000000190015,
					t = (n = e = t) + 5.5;
				for (t -= (e + .5) * d.log(t); r < 6; r++) o += i[r] / ++n;
				return d.log(2.5066282746310007 * o / e) - t
			}, p.loggam = function(t) {
				var e, n, r, i, o, s = [.08333333333333333, -.002777777777777778, .0007936507936507937, -
						.0005952380952380952, .0008417508417508418, -.001917526917526918, .00641025641025641, -
						.02955065359477124, .1796443723688307, -1.3924322169059
					],
					a = t,
					u = 0;
				if (1 == t || 2 == t) return 0;
				for (t <= 7 && (a = t + (u = d.floor(7 - t))), e = 1 / (a * a), n = 2 * d.PI, i = s[9], o = 8; 0 <=
					o; o--) i *= e, i += s[o];
				if (r = i / a + .5 * d.log(n) + (a - .5) * d.log(a) - a, t <= 7)
					for (o = 1; o <= u; o++) r -= d.log(a - 1), --a;
				return r
			}, p.gammafn = function(t) {
				var e, n, r, i = [-1.716185138865495, 24.76565080557592, -379.80425647094563, 629.3311553128184,
						866.9662027904133, -31451.272968848367, -36144.413418691176, 66456.14382024054
					],
					o = [-30.8402300119739, 315.35062697960416, -1015.1563674902192, -3107.771671572311,
						22538.11842098015, 4755.846277527881, -134659.9598649693, -115132.2596755535
					],
					s = !1,
					a = 0,
					u = 0,
					c = 0,
					l = t;
				if (171.6243769536076 < t) return 1 / 0;
				if (l <= 0) {
					if (!(r = l % 1 + 36e-17)) return 1 / 0;
					s = (1 & l ? -1 : 1) * d.PI / d.sin(d.PI * r), l = 1 - l
				}
				for (n = (t = l) < 1 ? l++ : (l -= a = (0 | l) - 1) - 1, e = 0; e < 8; ++e) c = (c + i[e]) * n, u =
					u * n + o[e];
				if (r = c / u + 1, t < l) r /= t;
				else if (l < t)
					for (e = 0; e < a; ++e) r *= l, l++;
				return s && (r = s / r), r
			}, p.gammap = function(t, e) {
				return p.lowRegGamma(t, e) * p.gammafn(t)
			}, p.lowRegGamma = function(t, e) {
				var n, r = p.gammaln(t),
					i = t,
					o = 1 / t,
					s = o,
					a = e + 1 - t,
					u = 1 / 1e-30,
					c = 1 / a,
					l = c,
					h = 1,
					f = -~(8.5 * d.log(1 <= t ? t : 1 / t) + .4 * t + 17);
				if (e < 0 || t <= 0) return NaN;
				if (e < t + 1) {
					for (; h <= f; h++) o += s *= e / ++i;
					return o * d.exp(-e + t * d.log(e) - r)
				}
				for (; h <= f; h++) l *= (c = 1 / (c = (n = -h * (h - t)) * c + (a += 2))) * (u = a + n / u);
				return 1 - l * d.exp(-e + t * d.log(e) - r)
			}, p.factorialln = function(t) {
				return t < 0 ? NaN : p.gammaln(t + 1)
			}, p.factorial = function(t) {
				return t < 0 ? NaN : p.gammafn(t + 1)
			}, p.combination = function(t, e) {
				return 170 < t || 170 < e ? d.exp(p.combinationln(t, e)) : p.factorial(t) / p.factorial(e) / p
					.factorial(t - e)
			}, p.combinationln = function(t, e) {
				return p.factorialln(t) - p.factorialln(e) - p.factorialln(t - e)
			}, p.permutation = function(t, e) {
				return p.factorial(t) / p.factorial(t - e)
			}, p.betafn = function(t, e) {
				if (!(t <= 0 || e <= 0)) return 170 < t + e ? d.exp(p.betaln(t, e)) : p.gammafn(t) * p.gammafn(e) /
					p.gammafn(t + e)
			}, p.betaln = function(t, e) {
				return p.gammaln(t) + p.gammaln(e) - p.gammaln(t + e)
			}, p.betacf = function(t, e, n) {
				var r, i, o, s = 1e-30,
					a = 1,
					u = e + n,
					c = e + 1,
					l = e - 1,
					h = 1,
					f = 1 - u * t / c;
				for (d.abs(f) < s && (f = s), o = f = 1 / f; a <= 100 && (f = 1 + (i = a * (n - a) * t / ((l + (r =
							2 * a)) * (e + r))) * f, d.abs(f) < s && (f = s), h = 1 + i / h, d.abs(h) < s && (h =
						s), o *= (f = 1 / f) * h, f = 1 + (i = -(e + a) * (u + a) * t / ((e + r) * (c + r))) * f, d
						.abs(f) < s && (f = s), h = 1 + i / h, d.abs(h) < s && (h = s), o *= i = (f = 1 / f) * h, !(
							d.abs(i - 1) < 3e-7)); a++);
				return o
			}, p.gammapinv = function(t, e) {
				var n, r, i, o, s, a, u = 0,
					c = e - 1,
					l = p.gammaln(e);
				if (1 <= t) return d.max(100, e + 100 * d.sqrt(e));
				if (t <= 0) return 0;
				for (n = 1 < e ? (s = d.log(c), a = d.exp(c * (s - 1) - l), o = t < .5 ? t : 1 - t, n = (2.30753 +
						.27061 * (r = d.sqrt(-2 * d.log(o)))) / (1 + r * (.99229 + .04481 * r)) - r, t < .5 && (
						n = -n), d.max(.001, e * d.pow(1 - 1 / (9 * e) - n / (3 * d.sqrt(e)), 3))) : t < (r = 1 -
						e * (.253 + .12 * e)) ? d.pow(t / r, 1 / e) : 1 - d.log(1 - (t - r) / (1 - r)); u <
					12; u++) {
					if (n <= 0) return 0;
					if ((n -= r = (i = (p.lowRegGamma(e, n) - t) / (r = 1 < e ? a * d.exp(-(n - c) + c * (d.log(n) -
							s)) : d.exp(-n + c * d.log(n) - l))) / (1 - .5 * d.min(1, i * ((e - 1) / n - 1)))) <=
						0 && (n = .5 * (n + r)), d.abs(r) < 1e-8 * n) break
				}
				return n
			}, p.erf = function(t) {
				var e, n, r, i = [-1.3026537197817094, .6419697923564902, .019476473204185836, -.00956151478680863,
						-.000946595344482036, .000366839497852761, 42523324806907e-18, -20278578112534e-18, -
						1624290004647e-18, 130365583558e-17, 1.5626441722e-8, -8.5238095915e-8, 6.529054439e-9,
						5.059343495e-9, -9.91364156e-10, -2.27365122e-10, 96467911e-18, 2394038e-18, -6886027e-18,
						894487e-18, 313092e-18, -112708e-18, 381e-18, 7106e-18, -1523e-18, -94e-18, 121e-18, -28e-18
					],
					o = i.length - 1,
					s = !1,
					a = 0,
					u = 0;
				for (t < 0 && (t = -t, s = !0), n = 4 * (e = 2 / (2 + t)) - 2; 0 < o; o--) a = n * (r = a) - u + i[
					o], u = r;
				return t = e * d.exp(-t * t + .5 * (i[0] + n * a) - u), s ? t - 1 : 1 - t
			}, p.erfc = function(t) {
				return 1 - p.erf(t)
			}, p.erfcinv = function(t) {
				var e, n, r, i, o = 0;
				if (2 <= t) return -100;
				if (t <= 0) return 100;
				for (i = t < 1 ? t : 2 - t, e = -.70711 * ((2.30753 + .27061 * (r = d.sqrt(-2 * d.log(i / 2)))) / (
						1 + r * (.99229 + .04481 * r)) - r); o < 2; o++) e += (n = p.erfc(e) - i) / (
					1.1283791670955126 * d.exp(-e * e) - e * n);
				return t < 1 ? e : -e
			}, p.ibetainv = function(t, e, n) {
				var r, i, o, s, a, u, c, l = e - 1,
					h = n - 1,
					f = 0;
				if (t <= 0) return 0;
				if (1 <= t) return 1;
				for (o = 1 <= e && 1 <= n ? (u = t < .5 ? t : 1 - t, o = (2.30753 + .27061 * (r = d.sqrt(-2 * d.log(
							u)))) / (1 + r * (.99229 + .04481 * r)) - r, t < .5 && (o = -o), s = (o * o - 3) / 6,
						a = 2 / (1 / (2 * e - 1) + 1 / (2 * n - 1)), u = o * d.sqrt(s + a) / a - (1 / (2 * n - 1) -
							1 / (2 * e - 1)) * (s + 5 / 6 - 2 / (3 * a)), e / (e + n * d.exp(2 * u))) : (s = d.log(
						e / (e + n)), a = d.log(n / (e + n)), t < (r = d.exp(e * s) / e) / (u = r + (i = d.exp(
						n * a) / n)) ? d.pow(e * u * t, 1 / e) : 1 - d.pow(n * u * (1 - t), 1 / n)), c = -p.gammaln(
						e) - p.gammaln(n) + p.gammaln(e + n); f < 10; f++) {
					if (0 === o || 1 === o) return o;
					if ((o -= r = (i = (p.ibeta(o, e, n) - t) / (r = d.exp(l * d.log(o) + h * d.log(1 - o) + c))) /
							(1 - .5 * d.min(1, i * (l / o - h / (1 - o))))) <= 0 && (o = .5 * (o + r)), 1 <= o && (
							o = .5 * (o + r + 1)), d.abs(r) < 1e-8 * o && 0 < f) break
				}
				return o
			}, p.ibeta = function(t, e, n) {
				var r = 0 === t || 1 === t ? 0 : d.exp(p.gammaln(e + n) - p.gammaln(e) - p.gammaln(n) + e * d.log(
					t) + n * d.log(1 - t));
				return !(t < 0 || 1 < t) && (t < (e + 1) / (e + n + 2) ? r * p.betacf(t, e, n) / e : 1 - r * p
					.betacf(1 - t, n, e) / n)
			}, p.randn = function(t, e) {
				var n, r, i, o;
				if (e = e || t, t) return p.create(t, e, function() {
					return p.randn()
				});
				for (; n = p._random_fn(), r = 1.7156 * (p._random_fn() - .5), o = (o = n - .449871) * o + (i = d
						.abs(r) + .386595) * (.196 * i - .25472 * o), .27597 < o && (.27846 < o || r * r > -4 * d
						.log(n) * n * n););
				return r / n
			}, p.randg = function(t, e, n) {
				var r, i, o, s, a, u = t;
				if (n = n || e, t = t || 1, e) return (n = p.zeros(e, n)).alter(function() {
					return p.randg(t)
				}), n;
				t < 1 && (t += 1), r = t - 1 / 3, i = 1 / d.sqrt(9 * r);
				do {
					for (; s = 1 + i * (a = p.randn()), s <= 0;);
				} while (s *= s * s, (o = p._random_fn()) > 1 - .331 * d.pow(a, 4) && d.log(o) > .5 * a * a + r * (
						1 - s + d.log(s)));
				if (t == u) return r * s;
				for (; o = p._random_fn(), 0 === o;);
				return d.pow(o, 1 / u) * r * s
			},
			function(t) {
				for (var e = 0; e < t.length; e++) ! function(e) {
					p.fn[e] = function() {
						return p(p.map(this, function(t) {
							return p[e](t)
						}))
					}
				}(t[e])
			}("gammaln gammafn factorial factorialln".split(" ")),
			function(t) {
				for (var e = 0; e < t.length; e++) ! function(t) {
					p.fn[t] = function() {
						return p(p[t].apply(null, arguments))
					}
				}(t[e])
			}("randn".split(" ")), _ = f, x = Math,
			function(t) {
				for (var e = 0; e < t.length; e++) ! function(o) {
					_[o] = function(t, e, n) {
							return this instanceof arguments.callee ? (this._a = t, this._b = e, this._c = n,
								this) : new arguments.callee(t, e, n)
						}, _.fn[o] = function(t, e, n) {
							n = _[o](t, e, n);
							return n.data = this, n
						}, _[o].prototype.sample = function(t) {
							var e = this._a,
								n = this._b,
								r = this._c;
							return t ? _.alter(t, function() {
								return _[o].sample(e, n, r)
							}) : _[o].sample(e, n, r)
						},
						function(t) {
							for (var e = 0; e < t.length; e++) ! function(i) {
								_[o].prototype[i] = function(t) {
									var e = this._a,
										n = this._b,
										r = this._c;
									return t || 0 === t || (t = this.data), "number" != typeof t ? _.fn
										.map.call(t, function(t) {
											return _[o][i](t, e, n, r)
										}) : _[o][i](t, e, n, r)
								}
							}(t[e])
						}("pdf cdf inv".split(" ")),
						function(t) {
							for (var e = 0; e < t.length; e++) ! function(t) {
								_[o].prototype[t] = function() {
									return _[o][t](this._a, this._b, this._c)
								}
							}(t[e])
						}("mean median mode variance".split(" "))
				}(t[e])
			}("beta centralF cauchy chisquare exponential gamma invgamma kumaraswamy laplace lognormal noncentralt normal pareto studentt weibull uniform binomial negbin hypgeom poisson triangular tukey arcsine"
				.split(" ")), _.extend(_.beta, {
				pdf: function(t, e, n) {
					return 1 < t || t < 0 ? 0 : 1 == e && 1 == n ? 1 : e < 512 && n < 512 ? x.pow(t, e -
						1) * x.pow(1 - t, n - 1) / _.betafn(e, n) : x.exp((e - 1) * x.log(t) + (n - 1) * x
							.log(1 - t) - _.betaln(e, n))
				},
				cdf: function(t, e, n) {
					return 1 < t || t < 0 ? +(1 < t) : _.ibeta(t, e, n)
				},
				inv: function(t, e, n) {
					return _.ibetainv(t, e, n)
				},
				mean: function(t, e) {
					return t / (t + e)
				},
				median: function(t, e) {
					return _.ibetainv(.5, t, e)
				},
				mode: function(t, e) {
					return (t - 1) / (t + e - 2)
				},
				sample: function(t, e) {
					t = _.randg(t);
					return t / (t + _.randg(e))
				},
				variance: function(t, e) {
					return t * e / (x.pow(t + e, 2) * (t + e + 1))
				}
			}), _.extend(_.centralF, {
				pdf: function(t, e, n) {
					var r;
					return t < 0 ? 0 : e <= 2 ? 0 === t && e < 2 ? 1 / 0 : 0 === t && 2 === e ? 1 : 1 / _
						.betafn(e / 2, n / 2) * x.pow(e / n, e / 2) * x.pow(t, e / 2 - 1) * x.pow(1 + e /
							n * t, -(e + n) / 2) : (r = e * t / (n + t * e), e * (n / (n + t * e)) / 2 * _
							.binomial.pdf((e - 2) / 2, (e + n - 2) / 2, r))
				},
				cdf: function(t, e, n) {
					return t < 0 ? 0 : _.ibeta(e * t / (e * t + n), e / 2, n / 2)
				},
				inv: function(t, e, n) {
					return n / (e * (1 / _.ibetainv(t, e / 2, n / 2) - 1))
				},
				mean: function(t, e) {
					return 2 < e ? e / (e - 2) : void 0
				},
				mode: function(t, e) {
					return 2 < t ? e * (t - 2) / (t * (e + 2)) : void 0
				},
				sample: function(t, e) {
					return 2 * _.randg(t / 2) / t / (2 * _.randg(e / 2) / e)
				},
				variance: function(t, e) {
					if (!(e <= 4)) return 2 * e * e * (t + e - 2) / (t * (e - 2) * (e - 2) * (e - 4))
				}
			}), _.extend(_.cauchy, {
				pdf: function(t, e, n) {
					return n < 0 ? 0 : n / (x.pow(t - e, 2) + x.pow(n, 2)) / x.PI
				},
				cdf: function(t, e, n) {
					return x.atan((t - e) / n) / x.PI + .5
				},
				inv: function(t, e, n) {
					return e + n * x.tan(x.PI * (t - .5))
				},
				median: function(t) {
					return t
				},
				mode: function(t) {
					return t
				},
				sample: function(t, e) {
					return _.randn() * x.sqrt(1 / (2 * _.randg(.5))) * e + t
				}
			}), _.extend(_.chisquare, {
				pdf: function(t, e) {
					return t < 0 ? 0 : 0 === t && 2 === e ? .5 : x.exp((e / 2 - 1) * x.log(t) - t / 2 - e /
						2 * x.log(2) - _.gammaln(e / 2))
				},
				cdf: function(t, e) {
					return t < 0 ? 0 : _.lowRegGamma(e / 2, t / 2)
				},
				inv: function(t, e) {
					return 2 * _.gammapinv(t, .5 * e)
				},
				mean: function(t) {
					return t
				},
				median: function(t) {
					return t * x.pow(1 - 2 / (9 * t), 3)
				},
				mode: function(t) {
					return 0 < t - 2 ? t - 2 : 0
				},
				sample: function(t) {
					return 2 * _.randg(t / 2)
				},
				variance: function(t) {
					return 2 * t
				}
			}), _.extend(_.exponential, {
				pdf: function(t, e) {
					return t < 0 ? 0 : e * x.exp(-e * t)
				},
				cdf: function(t, e) {
					return t < 0 ? 0 : 1 - x.exp(-e * t)
				},
				inv: function(t, e) {
					return -x.log(1 - t) / e
				},
				mean: function(t) {
					return 1 / t
				},
				median: function(t) {
					return 1 / t * x.log(2)
				},
				mode: function() {
					return 0
				},
				sample: function(t) {
					return -1 / t * x.log(_._random_fn())
				},
				variance: function(t) {
					return x.pow(t, -2)
				}
			}), _.extend(_.gamma, {
				pdf: function(t, e, n) {
					return t < 0 ? 0 : 0 === t && 1 === e ? 1 / n : x.exp((e - 1) * x.log(t) - t / n - _
						.gammaln(e) - e * x.log(n))
				},
				cdf: function(t, e, n) {
					return t < 0 ? 0 : _.lowRegGamma(e, t / n)
				},
				inv: function(t, e, n) {
					return _.gammapinv(t, e) * n
				},
				mean: function(t, e) {
					return t * e
				},
				mode: function(t, e) {
					if (1 < t) return (t - 1) * e
				},
				sample: function(t, e) {
					return _.randg(t) * e
				},
				variance: function(t, e) {
					return t * e * e
				}
			}), _.extend(_.invgamma, {
				pdf: function(t, e, n) {
					return t <= 0 ? 0 : x.exp(-(e + 1) * x.log(t) - n / t - _.gammaln(e) + e * x.log(n))
				},
				cdf: function(t, e, n) {
					return t <= 0 ? 0 : 1 - _.lowRegGamma(e, n / t)
				},
				inv: function(t, e, n) {
					return n / _.gammapinv(1 - t, e)
				},
				mean: function(t, e) {
					return 1 < t ? e / (t - 1) : void 0
				},
				mode: function(t, e) {
					return e / (t + 1)
				},
				sample: function(t, e) {
					return e / _.randg(t)
				},
				variance: function(t, e) {
					if (!(t <= 2)) return e * e / ((t - 1) * (t - 1) * (t - 2))
				}
			}), _.extend(_.kumaraswamy, {
				pdf: function(t, e, n) {
					return 0 === t && 1 === e ? n : 1 === t && 1 === n ? e : x.exp(x.log(e) + x.log(n) + (
						e - 1) * x.log(t) + (n - 1) * x.log(1 - x.pow(t, e)))
				},
				cdf: function(t, e, n) {
					return t < 0 ? 0 : 1 < t ? 1 : 1 - x.pow(1 - x.pow(t, e), n)
				},
				inv: function(t, e, n) {
					return x.pow(1 - x.pow(1 - t, 1 / n), 1 / e)
				},
				mean: function(t, e) {
					return e * _.gammafn(1 + 1 / t) * _.gammafn(e) / _.gammafn(1 + 1 / t + e)
				},
				median: function(t, e) {
					return x.pow(1 - x.pow(2, -1 / e), 1 / t)
				},
				mode: function(t, e) {
					if (1 <= t && 1 <= e && 1 !== t && 1 !== e) return x.pow((t - 1) / (t * e - 1), 1 / t)
				},
				variance: function() {
					throw new Error("variance not yet implemented")
				}
			}), _.extend(_.lognormal, {
				pdf: function(t, e, n) {
					return t <= 0 ? 0 : x.exp(-x.log(t) - .5 * x.log(2 * x.PI) - x.log(n) - x.pow(x.log(t) -
						e, 2) / (2 * n * n))
				},
				cdf: function(t, e, n) {
					return t < 0 ? 0 : .5 + .5 * _.erf((x.log(t) - e) / x.sqrt(2 * n * n))
				},
				inv: function(t, e, n) {
					return x.exp(-1.4142135623730951 * n * _.erfcinv(2 * t) + e)
				},
				mean: function(t, e) {
					return x.exp(t + e * e / 2)
				},
				median: function(t) {
					return x.exp(t)
				},
				mode: function(t, e) {
					return x.exp(t - e * e)
				},
				sample: function(t, e) {
					return x.exp(_.randn() * e + t)
				},
				variance: function(t, e) {
					return (x.exp(e * e) - 1) * x.exp(2 * t + e * e)
				}
			}), _.extend(_.noncentralt, {
				pdf: function(t, e, n) {
					return x.abs(n) < 1e-14 ? _.studentt.pdf(t, e) : x.abs(t) < 1e-14 ? x.exp(_.gammaln((e +
						1) / 2) - n * n / 2 - .5 * x.log(x.PI * e) - _.gammaln(e / 2)) : e / t * (_
						.noncentralt.cdf(t * x.sqrt(1 + 2 / e), e + 2, n) - _.noncentralt.cdf(t, e, n))
				},
				cdf: function(t, e, n) {
					if (x.abs(n) < 1e-14) return _.studentt.cdf(t, e);
					var r = !1;
					t < 0 && (r = !0, n = -n);
					for (var i = _.normal.cdf(-n, 0, 1), o = 1e-14 + 1, s = o, a = t * t / (t * t + e), u =
							0, c = x.exp(-n * n / 2), l = x.exp(-n * n / 2 - .5 * x.log(2) - _.gammaln(
							1.5)) * n; u < 200 || 1e-14 < s || 1e-14 < o;) s = o, 0 < u && (c *= n * n / (
						2 * u), l *= n * n / (2 * (u + .5))), i += .5 * (o = c * _.beta.cdf(a, u + .5,
						e / 2) + l * _.beta.cdf(a, u + 1, e / 2)), u++;
					return r ? 1 - i : i
				}
			}), _.extend(_.normal, {
				pdf: function(t, e, n) {
					return x.exp(-.5 * x.log(2 * x.PI) - x.log(n) - x.pow(t - e, 2) / (2 * n * n))
				},
				cdf: function(t, e, n) {
					return .5 * (1 + _.erf((t - e) / x.sqrt(2 * n * n)))
				},
				inv: function(t, e, n) {
					return -1.4142135623730951 * n * _.erfcinv(2 * t) + e
				},
				mean: function(t) {
					return t
				},
				median: function(t) {
					return t
				},
				mode: function(t) {
					return t
				},
				sample: function(t, e) {
					return _.randn() * e + t
				},
				variance: function(t, e) {
					return e * e
				}
			}), _.extend(_.pareto, {
				pdf: function(t, e, n) {
					return t < e ? 0 : n * x.pow(e, n) / x.pow(t, n + 1)
				},
				cdf: function(t, e, n) {
					return t < e ? 0 : 1 - x.pow(e / t, n)
				},
				inv: function(t, e, n) {
					return e / x.pow(1 - t, 1 / n)
				},
				mean: function(t, e) {
					if (!(e <= 1)) return e * x.pow(t, e) / (e - 1)
				},
				median: function(t, e) {
					return t * (e * x.SQRT2)
				},
				mode: function(t) {
					return t
				},
				variance: function(t, e) {
					if (!(e <= 2)) return t * t * e / (x.pow(e - 1, 2) * (e - 2))
				}
			}), _.extend(_.studentt, {
				pdf: function(t, e) {
					return e = 1e100 < e ? 1e100 : e, 1 / (x.sqrt(e) * _.betafn(.5, e / 2)) * x.pow(1 + t *
						t / e, -(e + 1) / 2)
				},
				cdf: function(t, e) {
					var n = e / 2;
					return _.ibeta((t + x.sqrt(t * t + e)) / (2 * x.sqrt(t * t + e)), n, n)
				},
				inv: function(t, e) {
					var n = _.ibetainv(2 * x.min(t, 1 - t), .5 * e, .5),
						n = x.sqrt(e * (1 - n) / n);
					return .5 < t ? n : -n
				},
				mean: function(t) {
					return 1 < t ? 0 : void 0
				},
				median: function() {
					return 0
				},
				mode: function() {
					return 0
				},
				sample: function(t) {
					return _.randn() * x.sqrt(t / (2 * _.randg(t / 2)))
				},
				variance: function(t) {
					return 2 < t ? t / (t - 2) : 1 < t ? 1 / 0 : void 0
				}
			}), _.extend(_.weibull, {
				pdf: function(t, e, n) {
					return t < 0 || e < 0 || n < 0 ? 0 : n / e * x.pow(t / e, n - 1) * x.exp(-x.pow(t / e,
						n))
				},
				cdf: function(t, e, n) {
					return t < 0 ? 0 : 1 - x.exp(-x.pow(t / e, n))
				},
				inv: function(t, e, n) {
					return e * x.pow(-x.log(1 - t), 1 / n)
				},
				mean: function(t, e) {
					return t * _.gammafn(1 + 1 / e)
				},
				median: function(t, e) {
					return t * x.pow(x.log(2), 1 / e)
				},
				mode: function(t, e) {
					return e <= 1 ? 0 : t * x.pow((e - 1) / e, 1 / e)
				},
				sample: function(t, e) {
					return t * x.pow(-x.log(_._random_fn()), 1 / e)
				},
				variance: function(t, e) {
					return t * t * _.gammafn(1 + 2 / e) - x.pow(_.weibull.mean(t, e), 2)
				}
			}), _.extend(_.uniform, {
				pdf: function(t, e, n) {
					return t < e || n < t ? 0 : 1 / (n - e)
				},
				cdf: function(t, e, n) {
					return t < e ? 0 : t < n ? (t - e) / (n - e) : 1
				},
				inv: function(t, e, n) {
					return e + t * (n - e)
				},
				mean: function(t, e) {
					return .5 * (t + e)
				},
				median: function(t, e) {
					return _.mean(t, e)
				},
				mode: function() {
					throw new Error("mode is not yet implemented")
				},
				sample: function(t, e) {
					return t / 2 + e / 2 + (e / 2 - t / 2) * (2 * _._random_fn() - 1)
				},
				variance: function(t, e) {
					return x.pow(e - t, 2) / 12
				}
			}), _.extend(_.binomial, {
				pdf: function(t, e, n) {
					return 0 === n || 1 === n ? e * n === t ? 1 : 0 : _.combination(e, t) * x.pow(n, t) * x
						.pow(1 - n, e - t)
				},
				cdf: function(t, e, n) {
					if (t < 0) return 0;
					if (e <= t) return 1;
					if (n < 0 || 1 < n || e <= 0) return NaN;
					var r = n,
						i = (t = x.floor(t)) + 1,
						n = e - t,
						e = i + n,
						t = x.exp(_.gammaln(e) - _.gammaln(n) - _.gammaln(i) + i * x.log(r) + n * x.log(1 -
							r)),
						i = r < (i + 1) / (e + 2) ? t * o(r, i, n, 1e-10) : 1 - t * o(1 - r, n, i, 1e-10);
					return x.round(1e10 * (1 - i)) / 1e10
				}
			}), _.extend(_.negbin, {
				pdf: function(t, e, n) {
					return t === t >>> 0 && (t < 0 ? 0 : _.combination(t + e - 1, e - 1) * x.pow(1 - n, t) *
						x.pow(n, e))
				},
				cdf: function(t, e, n) {
					var r = 0,
						i = 0;
					if (t < 0) return 0;
					for (; i <= t; i++) r += _.negbin.pdf(i, e, n);
					return r
				}
			}), _.extend(_.hypgeom, {
				pdf: function(t, e, n, r) {
					if (t != t | 0) return !1;
					if (t < 0 || t < n - (e - r)) return 0;
					if (r < t || n < t) return 0;
					if (e < 2 * n) return e < 2 * r ? _.hypgeom.pdf(e - n - r + t, e, e - n, e - r) : _
						.hypgeom.pdf(r - t, e, e - n, r);
					if (e < 2 * r) return _.hypgeom.pdf(n - t, e, n, e - r);
					if (n < r) return _.hypgeom.pdf(t, e, r, n);
					for (var i = 1, o = 0, s = 0; s < t; s++) {
						for (; 1 < i && o < r;) i *= 1 - n / (e - o), o++;
						i *= (r - s) * (n - s) / ((s + 1) * (e - n - r + s + 1))
					}
					for (; o < r; o++) i *= 1 - n / (e - o);
					return x.min(1, x.max(0, i))
				},
				cdf: function(t, e, n, r) {
					if (t < 0 || t < n - (e - r)) return 0;
					if (r <= t || n <= t) return 1;
					if (e < 2 * n) return e < 2 * r ? _.hypgeom.cdf(e - n - r + t, e, e - n, e - r) : 1 - _
						.hypgeom.cdf(r - t - 1, e, e - n, r);
					if (e < 2 * r) return 1 - _.hypgeom.cdf(n - t - 1, e, n, e - r);
					if (n < r) return _.hypgeom.cdf(t, e, r, n);
					for (var i = 1, o = 1, s = 0, a = 0; a < t; a++) {
						for (; 1 < i && s < r;) {
							var u = 1 - n / (e - s);
							o *= u, i *= u, s++
						}
						i += o *= (r - a) * (n - a) / ((a + 1) * (e - n - r + a + 1))
					}
					for (; s < r; s++) i *= 1 - n / (e - s);
					return x.min(1, x.max(0, i))
				}
			}), _.extend(_.poisson, {
				pdf: function(t, e) {
					return e < 0 || t % 1 != 0 || t < 0 ? 0 : x.pow(e, t) * x.exp(-e) / _.factorial(t)
				},
				cdf: function(t, e) {
					var n = [],
						r = 0;
					if (t < 0) return 0;
					for (; r <= t; r++) n.push(_.poisson.pdf(r, e));
					return _.sum(n)
				},
				mean: function(t) {
					return t
				},
				variance: function(t) {
					return t
				},
				sampleSmall: function(t) {
					for (var e = 1, n = 0, r = x.exp(-t); n++, e *= _._random_fn(), r < e;);
					return n - 1
				},
				sampleLarge: function(t) {
					for (var e, n, r, i = t, t = x.sqrt(i), o = x.log(i), s = .931 + 2.53 * t, a = .02483 *
							s - .059, u = 1.1239 + 1.1328 / (s - 3.4), c = .9277 - 3.6224 / (s - 2);;) {
						if (e = x.random() - .5, n = x.random(), r = .5 - x.abs(e), e = x.floor((2 * a / r +
								s) * e + i + .43), .07 <= r && n <= c) return e;
						if (!(e < 0 || r < .013 && r < n) && x.log(n) + x.log(u) - x.log(a / (r * r) + s) <=
							e * o - i - _.loggam(e + 1)) return e
					}
				},
				sample: function(t) {
					return t < 10 ? this.sampleSmall(t) : this.sampleLarge(t)
				}
			}), _.extend(_.triangular, {
				pdf: function(t, e, n, r) {
					return n <= e || r < e || n < r ? NaN : t < e || n < t ? 0 : t < r ? 2 * (t - e) / ((n -
						e) * (r - e)) : t === r ? 2 / (n - e) : 2 * (n - t) / ((n - e) * (n - r))
				},
				cdf: function(t, e, n, r) {
					return n <= e || r < e || n < r ? NaN : t <= e ? 0 : n <= t ? 1 : t <= r ? x.pow(t - e,
						2) / ((n - e) * (r - e)) : 1 - x.pow(n - t, 2) / ((n - e) * (n - r))
				},
				inv: function(t, e, n, r) {
					return n <= e || r < e || n < r ? NaN : t <= (r - e) / (n - e) ? e + (n - e) * x.sqrt(
						t * ((r - e) / (n - e))) : e + (n - e) * (1 - x.sqrt((1 - t) * (1 - (r - e) / (
						n - e))))
				},
				mean: function(t, e, n) {
					return (t + e + n) / 3
				},
				median: function(t, e, n) {
					return n <= (t + e) / 2 ? e - x.sqrt((e - t) * (e - n)) / x.sqrt(2) : (t + e) / 2 < n ?
						t + x.sqrt((e - t) * (n - t)) / x.sqrt(2) : void 0
				},
				mode: function(t, e, n) {
					return n
				},
				sample: function(t, e, n) {
					var r = _._random_fn();
					return r < (n - t) / (e - t) ? t + x.sqrt(r * (e - t) * (n - t)) : e - x.sqrt((1 - r) *
						(e - t) * (e - n))
				},
				variance: function(t, e, n) {
					return (t * t + e * e + n * n - t * e - t * n - e * n) / 18
				}
			}), _.extend(_.arcsine, {
				pdf: function(t, e, n) {
					return n <= e ? NaN : t <= e || n <= t ? 0 : 2 / x.PI * x.pow(x.pow(n - e, 2) - x.pow(
						2 * t - e - n, 2), -.5)
				},
				cdf: function(t, e, n) {
					return t < e ? 0 : t < n ? 2 / x.PI * x.asin(x.sqrt((t - e) / (n - e))) : 1
				},
				inv: function(t, e, n) {
					return e + (.5 - .5 * x.cos(x.PI * t)) * (n - e)
				},
				mean: function(t, e) {
					return e <= t ? NaN : (t + e) / 2
				},
				median: function(t, e) {
					return e <= t ? NaN : (t + e) / 2
				},
				mode: function() {
					throw new Error("mode is not yet implemented")
				},
				sample: function(t, e) {
					return (t + e) / 2 + (e - t) / 2 * x.sin(2 * x.PI * _.uniform.sample(0, 1))
				},
				variance: function(t, e) {
					return e <= t ? NaN : x.pow(e - t, 2) / 8
				}
			}), _.extend(_.laplace, {
				pdf: function(t, e, n) {
					return n <= 0 ? 0 : x.exp(-x.abs(t - e) / n) / (2 * n)
				},
				cdf: function(t, e, n) {
					return n <= 0 ? 0 : t < e ? .5 * x.exp((t - e) / n) : 1 - .5 * x.exp(-(t - e) / n)
				},
				mean: function(t) {
					return t
				},
				median: function(t) {
					return t
				},
				mode: function(t) {
					return t
				},
				variance: function(t, e) {
					return 2 * e * e
				},
				sample: function(t, e) {
					var n = _._random_fn() - .5;
					return t - e * ((e = n) / x.abs(e)) * x.log(1 - 2 * x.abs(n))
				}
			}), _.extend(_.tukey, {
				cdf: function(t, e, n) {
					var r = e,
						i = [.9894009349916499, .9445750230732326, .8656312023878318, .755404408355003,
							.6178762444026438, .45801677765722737, .2816035507792589, .09501250983763744
						],
						o = [.027152459411754096, .062253523938647894, .09515851168249279,
							.12462897125553388, .14959598881657674, .16915651939500254, .18260341504492358,
							.1894506104550685
						];
					if (t <= 0) return 0;
					if (n < 2 || r < 2) return NaN;
					if (!Number.isFinite(t)) return 1;
					if (25e3 < n) return v(t, 1, r);
					var e = .5 * n,
						s = e * x.log(n) - n * x.log(2) - _.gammaln(e),
						a = e - 1,
						u = .25 * n,
						c = n <= 100 ? 1 : n <= 800 ? .5 : n <= 5e3 ? .25 : .125;
					s += x.log(c);
					for (var l = 0, h = 1; h <= 50; h++) {
						for (var f = 0, p = (2 * h - 1) * c, d = 1; d <= 16; d++) {
							var g, m = 8 < d ? (g = d - 8 - 1, s + a * x.log(p + i[g] * c) - (i[g] * c +
								p) * u) : (g = d - 1, s + a * x.log(p - i[g] * c) + (i[g] * c - p) * u); -
							30 <= m && (f += v(8 < d ? t * x.sqrt(.5 * (i[g] * c + p)) : t * x.sqrt(.5 * (-
								i[g] * c + p)), 1, r) * o[g] * x.exp(m))
						}
						if (1 <= h * c && f <= 1e-14) break;
						l += f
					}
					if (1e-14 < f) throw new Error("tukey.cdf failed to converge");
					return 1 < l && (l = 1), l
				},
				inv: function(t, e, n) {
					if (n < 2 || e < 2) return NaN;
					if (t < 0 || 1 < t) return NaN;
					if (0 === t) return 0;
					if (1 === t) return 1 / 0;
					for (var r, i, o, s, a = (i = e, o = n, s = .5 - .5 * (r = t), s = (r = x.sqrt(x.log(1 /
									(s * s)))) + ((((-453642210148e-16 * r - .204231210125) * r -
									.342242088547) * r - 1) * r + .322232421088) / ((((.0038560700634 * r +
										.10353775285) * r + .531103462366) * r + .588581570495) * r +
									.099348462606), o < 120 && (s += (s * s * s + s) / o / 4), r = .8832 -
								.2368 * s, o < 120 && (r += -1.214 / o + 1.208 * s / o), s * (r * x.log(i -
									1) + 1.4142)), u = 0 < (f = _.tukey.cdf(a, e, n) - t) ? x.max(0, a -
							1) : a + 1, c = _.tukey.cdf(u, e, n) - t, l = 1; l < 50; l++) {
						var h = u - c * (u - a) / (c - f),
							f = c,
							a = u;
						if (h < 0 && (h = 0, c = -t), c = _.tukey.cdf(h, e, n) - t, u = h, x.abs(u - a) <
							1e-4) return h
					}
					throw new Error("tukey.inv failed to converge")
				}
			}), m = f, g = Math, i = Array.prototype.push, e = m.utils.isArray, m.extend({
				add: function(t, r) {
					return y(r) ? (y(r[0]) || (r = [r]), m.map(t, function(t, e, n) {
						return t + r[e][n]
					})) : m.map(t, function(t) {
						return t + r
					})
				},
				subtract: function(t, r) {
					return y(r) ? (y(r[0]) || (r = [r]), m.map(t, function(t, e, n) {
						return t - r[e][n] || 0
					})) : m.map(t, function(t) {
						return t - r
					})
				},
				divide: function(t, e) {
					return y(e) ? (y(e[0]) || (e = [e]), m.multiply(t, m.inv(e))) : m.map(t, function(t) {
						return t / e
					})
				},
				multiply: function(t, e) {
					var n, r, i, o, s, a, u, c;
					if (void 0 === t.length && void 0 === e.length) return t * e;
					if (s = t.length, a = t[0].length, u = m.zeros(s, i = y(e) ? e[0].length : a), c = 0, y(
							e)) {
						for (; c < i; c++)
							for (n = 0; n < s; n++) {
								for (r = o = 0; r < a; r++) o += t[n][r] * e[r][c];
								u[n][c] = o
							}
						return 1 === s && 1 === c ? u[0][0] : u
					}
					return m.map(t, function(t) {
						return t * e
					})
				},
				outer: function(t, e) {
					return m.multiply(t.map(function(t) {
						return [t]
					}), [e])
				},
				dot: function(t, e) {
					y(t[0]) || (t = [t]), y(e[0]) || (e = [e]);
					for (var n, r, i = 1 === t[0].length && 1 !== t.length ? m.transpose(t) : t, o = 1 ===
							e[0].length && 1 !== e.length ? m.transpose(e) : e, s = [], a = 0, u = i.length,
							c = i[0].length; a < u; a++) {
						for (s[a] = [], r = n = 0; r < c; r++) n += i[a][r] * o[a][r];
						s[a] = n
					}
					return 1 === s.length ? s[0] : s
				},
				pow: function(t, e) {
					return m.map(t, function(t) {
						return g.pow(t, e)
					})
				},
				exp: function(t) {
					return m.map(t, function(t) {
						return g.exp(t)
					})
				},
				log: function(t) {
					return m.map(t, function(t) {
						return g.log(t)
					})
				},
				abs: function(t) {
					return m.map(t, function(t) {
						return g.abs(t)
					})
				},
				norm: function(t, e) {
					var n = 0,
						r = 0;
					for (isNaN(e) && (e = 2), y(t[0]) && (t = t[0]); r < t.length; r++) n += g.pow(g.abs(t[
						r]), e);
					return g.pow(n, 1 / e)
				},
				angle: function(t, e) {
					return g.acos(m.dot(t, e) / (m.norm(t) * m.norm(e)))
				},
				aug: function(t, e) {
					for (var n = [], r = 0; r < t.length; r++) n.push(t[r].slice());
					for (r = 0; r < n.length; r++) i.apply(n[r], e[r]);
					return n
				},
				inv: function(t) {
					for (var e, n = t.length, r = t[0].length, i = m.identity(n, r), o = m.gauss_jordan(t,
							i), s = [], a = 0; a < n; a++)
						for (s[a] = [], e = r; e < o[0].length; e++) s[a][e - r] = o[a][e];
					return s
				},
				det: function(t) {
					var e, n = t.length,
						r = 2 * n,
						i = new Array(r),
						o = n - 1,
						s = r - 1,
						a = o - n + 1,
						u = s,
						c = 0,
						l = 0;
					if (2 === n) return t[0][0] * t[1][1] - t[0][1] * t[1][0];
					for (; c < r; c++) i[c] = 1;
					for (c = 0; c < n; c++) {
						for (e = 0; e < n; e++) i[a < 0 ? a + n : a] *= t[c][e], i[u < n ? u + n : u] *= t[
							c][e], a++, u--;
						a = --o - n + 1, u = --s
					}
					for (c = 0; c < n; c++) l += i[c];
					for (; c < r; c++) l -= i[c];
					return l
				},
				gauss_elimination: function(t, e) {
					for (var n, r, i, o, s = 0, a = 0, u = t.length, c = t[0].length, l = 0, h = [], f = (
							t = m.aug(t, e))[0].length, s = 0; s < u; s++) {
						for (r = t[s][s], o = (a = s) + 1; o < c; o++) r < g.abs(t[o][s]) && (r = t[o][s],
							a = o);
						if (a != s)
							for (o = 0; o < f; o++) i = t[s][o], t[s][o] = t[a][o], t[a][o] = i;
						for (a = s + 1; a < u; a++)
							for (n = t[a][s] / t[s][s], o = s; o < f; o++) t[a][o] = t[a][o] - n * t[s][o]
					}
					for (s = u - 1; 0 <= s; s--) {
						for (l = 0, a = s + 1; a <= u - 1; a++) l += h[a] * t[s][a];
						h[s] = (t[s][f - 1] - l) / t[s][s]
					}
					return h
				},
				gauss_jordan: function(t, e) {
					for (var n, r = m.aug(t, e), i = r.length, o = r[0].length, s = 0, a = 0; a < i; a++) {
						for (var u = a, c = a + 1; c < i; c++) g.abs(r[c][a]) > g.abs(r[u][a]) && (u = c);
						var l = r[a];
						for (r[a] = r[u], r[u] = l, c = a + 1; c < i; c++)
							for (s = r[c][a] / r[a][a], n = a; n < o; n++) r[c][n] -= r[a][n] * s
					}
					for (a = i - 1; 0 <= a; a--) {
						for (s = r[a][a], c = 0; c < a; c++)
							for (n = o - 1; a - 1 < n; n--) r[c][n] -= r[a][n] * r[c][a] / s;
						for (r[a][a] /= s, n = i; n < o; n++) r[a][n] /= s
					}
					return r
				},
				triaUpSolve: function(n, t) {
					var r, i = n[0].length,
						o = m.zeros(1, i)[0],
						e = !1;
					return null != t[0].length && (t = t.map(function(t) {
						return t[0]
					}), e = !0), m.arange(i - 1, -1, -1).forEach(function(e) {
						r = m.arange(e + 1, i).map(function(t) {
							return o[t] * n[e][t]
						}), o[e] = (t[e] - m.sum(r)) / n[e][e]
					}), e ? o.map(function(t) {
						return [t]
					}) : o
				},
				triaLowSolve: function(n, t) {
					var r, e = n[0].length,
						i = m.zeros(1, e)[0],
						o = !1;
					return null != t[0].length && (t = t.map(function(t) {
						return t[0]
					}), o = !0), m.arange(e).forEach(function(e) {
						r = m.arange(e).map(function(t) {
							return n[e][t] * i[t]
						}), i[e] = (t[e] - m.sum(r)) / n[e][e]
					}), o ? i.map(function(t) {
						return [t]
					}) : i
				},
				lu: function(r) {
					var t, e = r.length,
						i = m.identity(e),
						o = m.zeros(r.length, r[0].length);
					return m.arange(e).forEach(function(t) {
						o[0][t] = r[0][t]
					}), m.arange(1, e).forEach(function(n) {
						m.arange(n).forEach(function(e) {
							t = m.arange(e).map(function(t) {
								return i[n][t] * o[t][e]
							}), i[n][e] = (r[n][e] - m.sum(t)) / o[e][e]
						}), m.arange(n, e).forEach(function(e) {
							t = m.arange(n).map(function(t) {
								return i[n][t] * o[t][e]
							}), o[n][e] = r[t.length][e] - m.sum(t)
						})
					}), [i, o]
				},
				cholesky: function(t) {
					var r, e = t.length,
						i = m.zeros(t.length, t[0].length);
					return m.arange(e).forEach(function(n) {
						r = m.arange(n).map(function(t) {
							return g.pow(i[n][t], 2)
						}), i[n][n] = g.sqrt(t[n][n] - m.sum(r)), m.arange(n + 1, e).forEach(
							function(e) {
								r = m.arange(n).map(function(t) {
									return i[n][t] * i[e][t]
								}), i[e][n] = (t[n][e] - m.sum(r)) / i[n][n]
							})
					}), i
				},
				gauss_jacobi: function(t, e, n, r) {
					for (var i, o, s, a, u = 0, c = 0, l = t.length, h = [], f = [], p = []; u < l; u++)
						for (h[u] = [], f[u] = [], p[u] = [], c = 0; c < l; c++) c < u ? (h[u][c] = t[u][c],
								f[u][c] = p[u][c] = 0) : u < c ? (f[u][c] = t[u][c], h[u][c] = p[u][c] =
							0) : (p[u][c] = t[u][c], h[u][c] = f[u][c] = 0);
					for (s = m.multiply(m.multiply(m.inv(p), m.add(h, f)), -1), o = m.multiply(m.inv(p), e),
						i = n, a = m.add(m.multiply(s, n), o), u = 2; g.abs(m.norm(m.subtract(a, i))) > r;)
						i = a, a = m.add(m.multiply(s, i), o), u++;
					return a
				},
				gauss_seidel: function(t, e, n, r) {
					for (var i, o, s, a, u, c = 0, l = t.length, h = [], f = [], p = []; c < l; c++)
						for (h[c] = [], f[c] = [], p[c] = [], i = 0; i < l; i++) i < c ? (h[c][i] = t[c][i],
								f[c][i] = p[c][i] = 0) : c < i ? (f[c][i] = t[c][i], h[c][i] = p[c][i] =
							0) : (p[c][i] = t[c][i], h[c][i] = f[c][i] = 0);
					for (a = m.multiply(m.multiply(m.inv(m.add(p, h)), f), -1), s = m.multiply(m.inv(m.add(
							p, h)), e), o = n, u = m.add(m.multiply(a, n), s), c = 2; g.abs(m.norm(m
							.subtract(u, o))) > r;) o = u, u = m.add(m.multiply(a, o), s), c += 1;
					return u
				},
				SOR: function(t, e, n, r, i) {
					for (var o, s, a, u, c, l = 0, h = t.length, f = [], p = [], d = []; l < h; l++)
						for (f[l] = [], p[l] = [], d[l] = [], o = 0; o < h; o++) o < l ? (f[l][o] = t[l][o],
								p[l][o] = d[l][o] = 0) : l < o ? (p[l][o] = t[l][o], f[l][o] = d[l][o] =
							0) : (d[l][o] = t[l][o], f[l][o] = p[l][o] = 0);
					for (u = m.multiply(m.inv(m.add(d, m.multiply(f, i))), m.subtract(m.multiply(d, 1 - i),
							m.multiply(p, i))), a = m.multiply(m.multiply(m.inv(m.add(d, m.multiply(f, i))),
							e), i), s = n, c = m.add(m.multiply(u, n), a), l = 2; g.abs(m.norm(m.subtract(c,
							s))) > r;) s = c, c = m.add(m.multiply(u, s), a), l++;
					return c
				},
				householder: function(t) {
					for (var e, n, r, i, o, s = t.length, a = t[0].length, u = 0, c = []; u < s - 1; u++) {
						for (n = 0, o = u + 1; o < a; o++) n += t[o][u] * t[o][u];
						for (n = (0 < t[u + 1][u] ? -1 : 1) * g.sqrt(n), r = g.sqrt((n * n - t[u + 1][u] *
								n) / 2), (c = m.zeros(s, 1))[u + 1][0] = (t[u + 1][u] - n) / (2 * r), i =
							u + 2; i < s; i++) c[i][0] = t[i][u] / (2 * r);
						e = m.subtract(m.identity(s, a), m.multiply(m.multiply(c, m.transpose(c)), 2)), t =
							m.multiply(e, m.multiply(t, e))
					}
					return t
				},
				QR: (a = m.sum, u = m.arange, function(e) {
					var t, n, r, i = e.length,
						o = e[0].length,
						s = m.zeros(o, o);
					for (e = m.copy(e), n = 0; n < o; n++) {
						for (s[n][n] = g.sqrt(a(u(i).map(function(t) {
								return e[t][n] * e[t][n]
							}))), t = 0; t < i; t++) e[t][n] = e[t][n] / s[n][n];
						for (r = n + 1; r < o; r++)
							for (s[n][r] = a(u(i).map(function(t) {
									return e[t][n] * e[t][r]
								})), t = 0; t < i; t++) e[t][r] = e[t][r] - e[t][n] * s[n][r]
					}
					return [e, s]
				}),
				lstsq: function(t, e) {
					var n = !1;
					void 0 === e[0].length && (e = e.map(function(t) {
						return [t]
					}), n = !0);
					var o, s, r = (i = m.QR(t))[0],
						i = i[1],
						t = t[0].length,
						r = m.slice(r, {
							col: {
								end: t
							}
						}),
						t = m.slice(i, {
							row: {
								end: t
							}
						}),
						t = (o = t, t = (o = m.copy(o)).length, s = m.identity(t), m.arange(t - 1, -1, -1)
							.forEach(function(i) {
								m.sliceAssign(s, {
									row: i
								}, m.divide(m.slice(s, {
									row: i
								}), o[i][i])), m.sliceAssign(o, {
									row: i
								}, m.divide(m.slice(o, {
									row: i
								}), o[i][i])), m.arange(i).forEach(function(t) {
									var e = m.multiply(o[t][i], -1),
										n = m.slice(o, {
											row: t
										}),
										r = m.multiply(m.slice(o, {
											row: i
										}), e);
									m.sliceAssign(o, {
										row: t
									}, m.add(n, r));
									r = m.slice(s, {
										row: t
									}), e = m.multiply(m.slice(s, {
										row: i
									}), e);
									m.sliceAssign(s, {
										row: t
									}, m.add(r, e))
								})
							}), s);
					return void 0 === (r = m.transpose(r))[0].length && (r = [r]), void 0 === (e = m
						.multiply(m.multiply(t, r), e)).length && (e = [
						[e]
					]), n ? e.map(function(t) {
						return t[0]
					}) : e
				},
				jacobi: function(t) {
					for (var e, n, r, i, o, s, a, u = 1, c = t.length, l = m.identity(c, c), h = []; 1 ===
						u;) {
						for (o = t[0][1], i = 1, e = r = 0; e < c; e++)
							for (n = 0; n < c; n++) e != n && o < g.abs(t[e][n]) && (o = g.abs(t[e][n]), r =
								e, i = n);
						for (s = t[r][r] === t[i][i] ? 0 < t[r][i] ? g.PI / 4 : -g.PI / 4 : g.atan(2 * t[r][
								i
							] / (t[r][r] - t[i][i])) / 2, (a = m.identity(c, c))[r][r] = g.cos(s), a[r][
							i] = -g.sin(s), a[i][r] = g.sin(s), a[i][i] = g.cos(s), l = m.multiply(l, a),
							t = m.multiply(m.multiply(m.inv(a), t), a), u = 0, e = 1; e < c; e++)
							for (n = 1; n < c; n++) e != n && .001 < g.abs(t[e][n]) && (u = 1)
					}
					for (e = 0; e < c; e++) h.push(t[e][e]);
					return [l, h]
				},
				rungekutta: function(t, e, n, r, i, o) {
					var s, a, u;
					if (2 === o)
						for (; r <= n;) i = i + ((s = e * t(r, i)) + (a = e * t(r + e, i + s))) / 2, r += e;
					if (4 === o)
						for (; r <= n;) i = i + ((s = e * t(r, i)) + 2 * (a = e * t(r + e / 2, i + s / 2)) +
							2 * (u = e * t(r + e / 2, i + a / 2)) + e * t(r + e, i + u)) / 6, r += e;
					return i
				},
				romberg: function(t, e, n, r) {
					for (var i, o, s, a, u, c = 0, l = (n - e) / 2, h = [], f = [], p = []; c < r / 2;) {
						for (u = t(e), s = e, a = 0; s <= n; s += l, a++) h[a] = s;
						for (i = h.length, s = 1; s < i - 1; s++) u += (s % 2 != 0 ? 4 : 2) * t(h[s]);
						u = l / 3 * (u + t(n)), p[c] = u, l /= 2, c++
					}
					for (o = p.length, i = 1; 1 !== o;) {
						for (s = 0; s < o - 1; s++) f[s] = (g.pow(4, i) * p[s + 1] - p[s]) / (g.pow(4, i) -
							1);
						o = f.length, p = f, f = [], i++
					}
					return p
				},
				richardson: function(t, e, n, r) {
					function i(t, e) {
						for (var n, r = 0, i = t.length; r < i; r++) t[r] === e && (n = r);
						return n
					}
					for (var o, s, a, u, c, l = g.abs(n - t[i(t, n) + 1]), h = 0, f = [], p = []; l <= r;)
						o = i(t, n + r), s = i(t, n), f[h] = (e[o] - 2 * e[s] + e[2 * s - o]) / (r * r),
						r /= 2, h++;
					for (u = f.length, a = 1; 1 != u;) {
						for (c = 0; c < u - 1; c++) p[c] = (g.pow(4, a) * f[c + 1] - f[c]) / (g.pow(4, a) -
							1);
						u = p.length, f = p, p = [], a++
					}
					return f
				},
				simpson: function(t, e, n, r) {
					for (var i, o = (n - e) / r, s = t(e), a = [], u = e, c = 0, l = 1; u <= n; u += o, c++)
						a[c] = u;
					for (i = a.length; l < i - 1; l++) s += (l % 2 != 0 ? 4 : 2) * t(a[l]);
					return o / 3 * (s + t(n))
				},
				hermite: function(t, e, n, r) {
					for (var i, o = t.length, s = 0, a = 0, u = [], c = [], l = [], h = []; a < o; a++) {
						for (u[a] = 1, i = 0; i < o; i++) a != i && (u[a] *= (r - t[i]) / (t[a] - t[i]));
						for (i = c[a] = 0; i < o; i++) a != i && (c[a] += 1 / (t[a] - t[i]));
						l[a] = (1 - 2 * (r - t[a]) * c[a]) * (u[a] * u[a]), h[a] = (r - t[a]) * (u[a] * u[
							a]), s += l[a] * e[a] + h[a] * n[a]
					}
					return s
				},
				lagrange: function(t, e, n) {
					for (var r, i, o = 0, s = 0, a = t.length; s < a; s++) {
						for (i = e[s], r = 0; r < a; r++) s != r && (i *= (n - t[r]) / (t[s] - t[r]));
						o += i
					}
					return o
				},
				cubic_spline: function(t, e, n) {
					for (var r, i, o = t.length, s = 0, a = [], u = [], c = [], l = [], h = [], f = []; s <
						o - 1; s++) l[s] = t[s + 1] - t[s];
					for (c[0] = 0, s = 1; s < o - 1; s++) c[s] = 3 / l[s] * (e[s + 1] - e[s]) - 3 / l[s -
						1] * (e[s] - e[s - 1]);
					for (s = 1; s < o - 1; s++) a[s] = [], u[s] = [], a[s][s - 1] = l[s - 1], a[s][s] = 2 *
						(l[s - 1] + l[s]), a[s][s + 1] = l[s], u[s][0] = c[s];
					for (i = m.multiply(m.inv(a), u), r = 0; r < o - 1; r++) h[r] = (e[r + 1] - e[r]) / l[
						r] - l[r] * (i[r + 1][0] + 2 * i[r][0]) / 3, f[r] = (i[r + 1][0] - i[r][0]) / (3 *
							l[r]);
					for (r = 0; r < o && !(t[r] > n); r++);
					return e[--r] + (n - t[r]) * h[r] + m.sq(n - t[r]) * i[r] + (n - t[r]) * m.sq(n - t[
						r]) * f[r]
				},
				gauss_quadrature: function() {
					throw new Error("gauss_quadrature not yet implemented")
				},
				PCA: function(t) {
					for (var e, n, r, i, o, s, a = t.length, u = t[0].length, c = 0, l = [], h = [], f = [],
							p = [], d = [], g = [], c = 0; c < a; c++) l[c] = m.sum(t[c]) / u;
					for (c = 0; c < u; c++)
						for (p[c] = [], e = 0; e < a; e++) p[c][e] = t[e][c] - l[e];
					for (p = m.transpose(p), c = 0; c < a; c++)
						for (d[c] = [], e = 0; e < a; e++) d[c][e] = m.dot([p[c]], [p[e]]) / (u - 1);
					for (s = (r = m.jacobi(d))[0], h = r[1], g = m.transpose(s), c = 0; c < h.length; c++)
						for (e = c; e < h.length; e++) h[c] < h[e] && (n = h[c], h[c] = h[e], h[e] = n, i =
							g[c], g[c] = g[e], g[e] = i);
					for (o = m.transpose(p), c = 0; c < a; c++)
						for (f[c] = [], e = 0; e < o.length; e++) f[c][e] = m.dot([g[c]], [o[e]]);
					return [t, h, g, f]
				}
			}),
			function(t) {
				for (var e = 0; e < t.length; e++) ! function(r) {
					m.fn[r] = function(t, e) {
						var n = this;
						return e ? (setTimeout(function() {
							e.call(n, m.fn[r].call(n, t))
						}, 15), this) : "number" == typeof m[r](this, t) ? m[r](this, t) : m(m[r](this,
							t))
					}
				}(t[e])
			}("add divide multiply subtract dot pow exp log abs norm angle".split(" ")), c = f, l = Math, h = []
			.slice, s = c.utils.isNumber, n = c.utils.isArray, c.extend({
				zscore: function() {
					var t = h.call(arguments);
					return s(t[1]) ? (t[0] - t[1]) / t[2] : (t[0] - c.mean(t[1])) / c.stdev(t[1], t[2])
				},
				ztest: function() {
					var t, e = h.call(arguments);
					return n(e[1]) ? (t = c.zscore(e[0], e[1], e[3]), 1 === e[2] ? c.normal.cdf(-l.abs(t),
						0, 1) : 2 * c.normal.cdf(-l.abs(t), 0, 1)) : 2 < e.length ? (t = c.zscore(e[0],
						e[1], e[2]), 1 === e[3] ? c.normal.cdf(-l.abs(t), 0, 1) : 2 * c.normal.cdf(-
						l.abs(t), 0, 1)) : (t = e[0], 1 === e[1] ? c.normal.cdf(-l.abs(t), 0, 1) : 2 * c
						.normal.cdf(-l.abs(t), 0, 1))
				}
			}), c.extend(c.fn, {
				zscore: function(t, e) {
					return (t - this.mean()) / this.stdev(e)
				},
				ztest: function(t, e, n) {
					n = l.abs(this.zscore(t, n));
					return 1 === e ? c.normal.cdf(-n, 0, 1) : 2 * c.normal.cdf(-n, 0, 1)
				}
			}), c.extend({
				tscore: function() {
					var t = h.call(arguments);
					return 4 === t.length ? (t[0] - t[1]) / (t[2] / l.sqrt(t[3])) : (t[0] - c.mean(t[1])) /
						(c.stdev(t[1], !0) / l.sqrt(t[1].length))
				},
				ttest: function() {
					var t, e = h.call(arguments);
					return 5 === e.length ? (t = l.abs(c.tscore(e[0], e[1], e[2], e[3])), 1 === e[4] ? c
						.studentt.cdf(-t, e[3] - 1) : 2 * c.studentt.cdf(-t, e[3] - 1)) : s(e[1]) ? (t =
						l.abs(e[0]), 1 == e[2] ? c.studentt.cdf(-t, e[1] - 1) : 2 * c.studentt.cdf(-t,
							e[1] - 1)) : (t = l.abs(c.tscore(e[0], e[1])), 1 == e[2] ? c.studentt.cdf(-
						t, e[1].length - 1) : 2 * c.studentt.cdf(-t, e[1].length - 1))
				}
			}), c.extend(c.fn, {
				tscore: function(t) {
					return (t - this.mean()) / (this.stdev(!0) / l.sqrt(this.cols()))
				},
				ttest: function(t, e) {
					return 1 === e ? 1 - c.studentt.cdf(l.abs(this.tscore(t)), this.cols() - 1) : 2 * c
						.studentt.cdf(-l.abs(this.tscore(t)), this.cols() - 1)
				}
			}), c.extend({
				anovafscore: function() {
					var t, e, n, r, i, o, s, a, u = h.call(arguments);
					if (1 === u.length) {
						for (i = new Array(u[0].length), s = 0; s < u[0].length; s++) i[s] = u[0][s];
						u = i
					}
					for (e = new Array, s = 0; s < u.length; s++) e = e.concat(u[s]);
					for (n = c.mean(e), s = t = 0; s < u.length; s++) t += u[s].length * l.pow(c.mean(u[
						s]) - n, 2);
					for (t /= u.length - 1, s = o = 0; s < u.length; s++)
						for (r = c.mean(u[s]), a = 0; a < u[s].length; a++) o += l.pow(u[s][a] - r, 2);
					return t / (o /= e.length - u.length)
				},
				anovaftest: function() {
					var t, e = h.call(arguments);
					if (s(e[0])) return 1 - c.centralF.cdf(e[0], e[1], e[2]);
					for (var n = c.anovafscore(e), r = e.length - 1, i = 0, o = 0; o < e.length; o++) i +=
						e[o].length;
					return t = i - r - 1, 1 - c.centralF.cdf(n, r, t)
				},
				ftest: function(t, e, n) {
					return 1 - c.centralF.cdf(t, e, n)
				}
			}), c.extend(c.fn, {
				anovafscore: function() {
					return c.anovafscore(this.toArray())
				},
				anovaftes: function() {
					for (var t = 0, e = 0; e < this.length; e++) t += this[e].length;
					return c.ftest(this.anovafscore(), this.length - 1, t - this.length)
				}
			}), c.extend({
				qscore: function() {
					var t, e, n, r, i = h.call(arguments),
						i = s(i[0]) ? (t = i[0], e = i[1], n = i[2], r = i[3], i[4]) : (t = c.mean(i[0]),
							e = c.mean(i[1]), n = i[0].length, r = i[1].length, i[2]);
					return l.abs(t - e) / (i * l.sqrt((1 / n + 1 / r) / 2))
				},
				qtest: function() {
					var t, e = h.call(arguments),
						n = (e = 3 === e.length ? (t = e[0], e.slice(1)) : 7 === e.length ? (t = c.qscore(e[
							0], e[1], e[2], e[3], e[4]), e.slice(5)) : (t = c.qscore(e[0], e[1], e[2]),
							e.slice(3)))[0],
						e = e[1];
					return 1 - c.tukey.cdf(t, e, n - e)
				},
				tukeyhsd: function(t) {
					for (var e = c.pooledstdev(t), n = t.map(function(t) {
							return c.mean(t)
						}), r = t.reduce(function(t, e) {
							return t + e.length
						}, 0), i = [], o = 0; o < t.length; ++o)
						for (var s = o + 1; s < t.length; ++s) {
							var a = c.qtest(n[o], n[s], t[o].length, t[s].length, e, r, t.length);
							i.push([
								[o, s], a
							])
						}
					return i
				}
			}), c.extend({
				normalci: function() {
					var t = h.call(arguments),
						e = new Array(2),
						n = 4 === t.length ? l.abs(c.normal.inv(t[1] / 2, 0, 1) * t[2] / l.sqrt(t[3])) : l
						.abs(c.normal.inv(t[1] / 2, 0, 1) * c.stdev(t[2]) / l.sqrt(t[2].length));
					return e[0] = t[0] - n, e[1] = t[0] + n, e
				},
				tci: function() {
					var t = h.call(arguments),
						e = new Array(2),
						n = 4 === t.length ? l.abs(c.studentt.inv(t[1] / 2, t[3] - 1) * t[2] / l.sqrt(t[
						3])) : l.abs(c.studentt.inv(t[1] / 2, t[2].length - 1) * c.stdev(t[2], !0) / l.sqrt(
							t[2].length));
					return e[0] = t[0] - n, e[1] = t[0] + n, e
				},
				significant: function(t, e) {
					return t < e
				}
			}), c.extend(c.fn, {
				normalci: function(t, e) {
					return c.normalci(t, e, this.toArray())
				},
				tci: function(t, e) {
					return c.tci(t, e, this.toArray())
				}
			}), c.extend(c.fn, {
				oneSidedDifferenceOfProportions: function(t, e, n, r) {
					r = b(t, e, n, r);
					return c.ztest(r, 1)
				},
				twoSidedDifferenceOfProportions: function(t, e, n, r) {
					r = b(t, e, n, r);
					return c.ztest(r, 2)
				}
			}), f.models = {
				ols: function(t, e) {
					var n = w(t, e),
						r = C(n),
						t = {
							F_statistic: t = (i = n).R2 / i.df_model / ((1 - i.R2) / i.df_resid),
							pvalue: 1 - (e = t, t = i.df_model, i = i.df_resid, f.beta.cdf(e / (i / t + e), t /
								2, i / 2))
						},
						i = 1 - (1 - n.R2) * ((n.nobs - 1) / n.df_resid);
					return n.t = r, n.f = t, n.adjust_R2 = i, n
				}
			}, f.extend({
				buildxmatrix: function() {
					for (var t = new Array(arguments.length), e = 0; e < arguments.length; e++) t[e] = [1]
						.concat(arguments[e]);
					return f(t)
				},
				builddxmatrix: function(t) {
					for (var e = new Array(t.length), n = 0; n < t.length; n++) e[n] = [1].concat(t[n]);
					return f(e)
				},
				buildjxmatrix: function(t) {
					for (var e = new Array(t.length), n = 0; n < t.length; n++) e[n] = t[n];
					return f.builddxmatrix(e)
				},
				buildymatrix: function(t) {
					return f(t).transpose()
				},
				buildjymatrix: function(t) {
					return t.transpose()
				},
				matrixmult: function(t, e) {
					var n, r, i, o, s;
					if (t.cols() == e.rows()) {
						if (1 < e.rows()) {
							for (o = [], n = 0; n < t.rows(); n++)
								for (o[n] = [], r = 0; r < e.cols(); r++) {
									for (i = s = 0; i < t.cols(); i++) s += t.toArray()[n][i] * e.toArray()[
										i][r];
									o[n][r] = s
								}
							return f(o)
						}
						for (o = [], n = 0; n < t.rows(); n++)
							for (o[n] = [], r = 0; r < e.cols(); r++) {
								for (i = s = 0; i < t.cols(); i++) s += t.toArray()[n][i] * e.toArray()[r];
								o[n][r] = s
							}
						return f(o)
					}
				},
				regress: function(t, e) {
					var n = f.xtranspxinv(t),
						t = t.transpose(),
						t = f.matrixmult(f(n), t);
					return f.matrixmult(t, e)
				},
				regresst: function(t, e, n) {
					var r = f.regress(t, e),
						i = {
							anova: {}
						},
						o = f.jMatYBar(t, r);
					i.yBar = o;
					var s = e.mean();
					i.anova.residuals = f.residuals(e, o), i.anova.ssr = f.ssr(o, s), i.anova.msr = i.anova
						.ssr / (t[0].length - 1), i.anova.sse = f.sse(e, o), i.anova.mse = i.anova.sse / (e
							.length - (t[0].length - 1) - 1), i.anova.sst = f.sst(e, s), i.anova.mst = i
						.anova.sst / (e.length - 1), i.anova.r2 = 1 - i.anova.sse / i.anova.sst, i.anova
						.r2 < 0 && (i.anova.r2 = 0), i.anova.fratio = i.anova.msr / i.anova.mse, i.anova
						.pvalue = f.anovaftest(i.anova.fratio, t[0].length - 1, e.length - (t[0].length -
							1) - 1), i.anova.rmse = Math.sqrt(i.anova.mse), i.anova.r2adj = 1 - i.anova
						.mse / i.anova.mst, i.anova.r2adj < 0 && (i.anova.r2adj = 0), i.stats = new Array(t[
							0].length);
					for (var a, u, c, l = f.xtranspxinv(t), h = 0; h < r.length; h++) a = Math.sqrt(i.anova
						.mse * Math.abs(l[h][h])), u = Math.abs(r[h] / a), c = f.ttest(u, e.length - t[
						0].length - 1, n), i.stats[h] = [r[h], a, u, c];
					return i.regress = r, i
				},
				xtranspx: function(t) {
					return f.matrixmult(t.transpose(), t)
				},
				xtranspxinv: function(t) {
					t = f.matrixmult(t.transpose(), t);
					return f.inv(t)
				},
				jMatYBar: function(t, e) {
					e = f.matrixmult(t, e);
					return new f(e)
				},
				residuals: function(t, e) {
					return f.matrixsubtract(t, e)
				},
				ssr: function(t, e) {
					for (var n = 0, r = 0; r < t.length; r++) n += Math.pow(t[r] - e, 2);
					return n
				},
				sse: function(t, e) {
					for (var n = 0, r = 0; r < t.length; r++) n += Math.pow(t[r] - e[r], 2);
					return n
				},
				sst: function(t, e) {
					for (var n = 0, r = 0; r < t.length; r++) n += Math.pow(t[r] - e, 2);
					return n
				},
				matrixsubtract: function(t, e) {
					for (var n = new Array(t.length), r = 0; r < t.length; r++) {
						n[r] = new Array(t[r].length);
						for (var i = 0; i < t[r].length; i++) n[r][i] = t[r][i] - e[r][i]
					}
					return f(n)
				}
			}), f.jStat = f
	});
var CryptoApi = function(n) {
	var r = {};

	function i(t) {
		if (r[t]) return r[t].exports;
		var e = r[t] = {
			i: t,
			l: !1,
			exports: {}
		};
		return n[t].call(e.exports, e, e.exports, i), e.l = !0, e.exports
	}
	return i.m = n, i.c = r, i.d = function(t, e, n) {
		i.o(t, e) || Object.defineProperty(t, e, {
			enumerable: !0,
			get: n
		})
	}, i.r = function(t) {
		"undefined" != typeof Symbol && Symbol.toStringTag && Object.defineProperty(t, Symbol.toStringTag, {
			value: "Module"
		}), Object.defineProperty(t, "__esModule", {
			value: !0
		})
	}, i.t = function(e, t) {
		if (1 & t && (e = i(e)), 8 & t) return e;
		if (4 & t && "object" == typeof e && e && e.__esModule) return e;
		var n = Object.create(null);
		if (i.r(n), Object.defineProperty(n, "default", {
				enumerable: !0,
				value: e
			}), 2 & t && "string" != typeof e)
			for (var r in e) i.d(n, r, function(t) {
				return e[t]
			}.bind(null, r));
		return n
	}, i.n = function(t) {
		var e = t && t.__esModule ? function() {
			return t.default
		} : function() {
			return t
		};
		return i.d(e, "a", e), e
	}, i.o = function(t, e) {
		return Object.prototype.hasOwnProperty.call(t, e)
	}, i.p = "", i(i.s = 29)
}([function(t, e, n) {
	"use strict";

	function r(t, e) {
		return t << e | t >>> 32 - e | 0
	}

	function i(t, e) {
		return t >>> e | t << 32 - e | 0
	}

	function o(t, e, n) {
		return 32 === n ? e : 32 < n ? o(e, t, n - 32) : 4294967295 & (t >>> n | e << 32 - n)
	}

	function s(t, e, n) {
		return 32 === n ? t : 32 < n ? s(e, t, n - 32) : 4294967295 & (e >>> n | t << 32 - n)
	}
	n.d(e, "a", function() {
		return r
	}), n.d(e, "b", function() {
		return i
	}), n.d(e, "d", function() {
		return s
	}), n.d(e, "c", function() {
		return o
	})
}, function(t, e, n) {
	"use strict";

	function r(t) {
		for (var e = "", n = 0, r = t.length; n < r; n++) {
			var i = t.charCodeAt(n);
			i < 128 ? e += String.fromCharCode(i) : (i < 2048 ? e += String.fromCharCode(192 | i >> 6) : (
				i < 55296 || 57344 <= i ? e += String.fromCharCode(224 | i >> 12) : (n++, i =
					65536 + ((1023 & i) << 10 | 1023 & t.charCodeAt(n)), e += String.fromCharCode(
						240 | i >> 18), e += String.fromCharCode(128 | i >> 12 & 63)), e += String
				.fromCharCode(128 | i >> 6 & 63)), e += String.fromCharCode(128 | 63 & i))
		}
		return e
	}
	n.d(e, "a", function() {
		return r
	})
}, function(t, e, n) {
	"use strict";

	function r(t) {
		for (var e = "", n = 0, r = t.length; n < r; n++) e += (t.charCodeAt(n) < 16 ? "0" : "") + t
			.charCodeAt(n).toString(16);
		return e
	}
	n.d(e, "a", function() {
		return r
	})
}, function(t, e, n) {
	"use strict";

	function r(t) {
		return (r = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(t) {
			return typeof t
		} : function(t) {
			return t && "function" == typeof Symbol && t.constructor === Symbol && t !== Symbol
				.prototype ? "symbol" : typeof t
		})(t)
	}

	function i(t) {
		return (i = Object.setPrototypeOf ? Object.getPrototypeOf : function(t) {
			return t.__proto__ || Object.getPrototypeOf(t)
		})(t)
	}

	function o(t, e) {
		return (o = Object.setPrototypeOf || function(t, e) {
			return t.__proto__ = e, t
		})(t, e)
	}(function(t, e) {
		if ("function" != typeof e && null !== e) throw new TypeError(
			"Super expression must either be null or a function");
		t.prototype = Object.create(e && e.prototype, {
			constructor: {
				value: t,
				writable: !0,
				configurable: !0
			}
		}), e && o(t, e)
	})(s, n(4).a),
	function(t, e) {
		for (var n = 0; n < e.length; n++) {
			var r = e[n];
			r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0),
				Object.defineProperty(t, r.key, r)
		}
	}(s.prototype, [{
		key: "process",
		value: function() {
			for (; this.state.message.length >= this.blockSizeInBytes;) {
				this.blockUnits = [];
				for (var t = 0; t < this.blockSizeInBytes; t += 4) this.blockUnits.push(this
					.state.message.charCodeAt(t) << 24 | this.state.message.charCodeAt(t +
						1) << 16 | this.state.message.charCodeAt(t + 2) << 8 | this.state
					.message.charCodeAt(t + 3));
				this.state.message = this.state.message.substr(this.blockSizeInBytes), this
					.processBlock(this.blockUnits)
			}
		}
	}, {
		key: "processBlock",
		value: function(t) {}
	}, {
		key: "getStateHash",
		value: function(t) {
			t = t || this.state.hash.length;
			for (var e = "", n = 0; n < t; n++) e += String.fromCharCode(this.state.hash[n] >>
					24 & 255) + String.fromCharCode(this.state.hash[n] >> 16 & 255) + String
				.fromCharCode(this.state.hash[n] >> 8 & 255) + String.fromCharCode(255 & this
					.state.hash[n]);
			return e
		}
	}, {
		key: "addLengthBits",
		value: function() {
			this.state.message += "\0\0\0" + String.fromCharCode(this.state.length >> 29 &
				255) + String.fromCharCode(this.state.length >> 21 & 255) + String.fromCharCode(
					this.state.length >> 13 & 255) + String.fromCharCode(this.state.length >>
					5 & 255) + String.fromCharCode(this.state.length << 3 & 255)
		}
	}]), n = s;

	function s(t) {
		var e;
		return function(t) {
			if (!(t instanceof s)) throw new TypeError("Cannot call a class as a function")
		}(this), e = this, (t = !(t = i(s).call(this, t)) || "object" !== r(t) && "function" !=
			typeof t ? function() {
				if (void 0 !== e) return e;
				throw new ReferenceError("this hasn't been initialised - super() hasn't been called")
			}() : t).unitOrder = 1, t.blockUnits = [], t
	}
	e.a = n
}, function(t, e, n) {
	"use strict";
	var r = (function(t, e) {
		for (var n = 0; n < e.length; n++) {
			var r = e[n];
			r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !
				0), Object.defineProperty(t, r.key, r)
		}
	}(i.prototype, [{
		key: "reset",
		value: function() {
			this.state = {}, this.state.message = "", this.state.length = 0
		}
	}, {
		key: "getState",
		value: function() {
			return JSON.parse(JSON.stringify(this.state))
		}
	}, {
		key: "setState",
		value: function(t) {
			this.state = t
		}
	}, {
		key: "update",
		value: function(t) {
			this.state.message += t, this.state.length += t.length, this.process()
		}
	}, {
		key: "process",
		value: function() {}
	}, {
		key: "finalize",
		value: function() {
			return ""
		}
	}, {
		key: "getStateHash",
		value: function(t) {
			return ""
		}
	}, {
		key: "addPaddingPKCS7",
		value: function(t) {
			this.state.message += new Array(t + 1).join(String.fromCharCode(t))
		}
	}, {
		key: "addPaddingISO7816",
		value: function(t) {
			this.state.message += "" + new Array(t).join("\0")
		}
	}, {
		key: "addPaddingZero",
		value: function(t) {
			this.state.message += new Array(t + 1).join("\0")
		}
	}]), i);

	function i(t) {
		! function(t) {
			if (!(t instanceof i)) throw new TypeError("Cannot call a class as a function")
		}(this), this.unitSize = 4, this.unitOrder = 0, this.blockSize = 16, this.blockSizeInBytes = this
			.blockSize * this.unitSize, this.options = t || {}, this.reset()
	}
	e.a = r
}, function(t, e, n) {
	"use strict";

	function r(t) {
		return (r = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(t) {
			return typeof t
		} : function(t) {
			return t && "function" == typeof Symbol && t.constructor === Symbol && t !== Symbol
				.prototype ? "symbol" : typeof t
		})(t)
	}

	function i(t) {
		return (i = Object.setPrototypeOf ? Object.getPrototypeOf : function(t) {
			return t.__proto__ || Object.getPrototypeOf(t)
		})(t)
	}

	function o(t, e) {
		return (o = Object.setPrototypeOf || function(t, e) {
			return t.__proto__ = e, t
		})(t, e)
	}(function(t, e) {
		if ("function" != typeof e && null !== e) throw new TypeError(
			"Super expression must either be null or a function");
		t.prototype = Object.create(e && e.prototype, {
			constructor: {
				value: t,
				writable: !0,
				configurable: !0
			}
		}), e && o(t, e)
	})(s, n(4).a),
	function(t, e) {
		for (var n = 0; n < e.length; n++) {
			var r = e[n];
			r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0),
				Object.defineProperty(t, r.key, r)
		}
	}(s.prototype, [{
		key: "process",
		value: function() {
			for (; this.state.message.length >= this.blockSizeInBytes;) {
				this.blockUnits = [];
				for (var t = 0; t < this.blockSizeInBytes; t += 4) this.blockUnits.push(this
					.state.message.charCodeAt(t) | this.state.message.charCodeAt(t + 1) <<
					8 | this.state.message.charCodeAt(t + 2) << 16 | this.state.message
					.charCodeAt(t + 3) << 24);
				this.state.message = this.state.message.substr(this.blockSizeInBytes), this
					.processBlock(this.blockUnits)
			}
		}
	}, {
		key: "processBlock",
		value: function(t) {}
	}, {
		key: "getStateHash",
		value: function(t) {
			t = t || this.state.hash.length;
			for (var e = "", n = 0; n < t; n++) e += String.fromCharCode(255 & this.state.hash[
					n]) + String.fromCharCode(this.state.hash[n] >> 8 & 255) + String
				.fromCharCode(this.state.hash[n] >> 16 & 255) + String.fromCharCode(this.state
					.hash[n] >> 24 & 255);
			return e
		}
	}, {
		key: "addLengthBits",
		value: function() {
			this.state.message += String.fromCharCode(this.state.length << 3 & 255) + String
				.fromCharCode(this.state.length >> 5 & 255) + String.fromCharCode(this.state
					.length >> 13 & 255) + String.fromCharCode(this.state.length >> 21 & 255) +
				String.fromCharCode(this.state.length >> 29 & 255) + "\0\0\0"
		}
	}]), n = s;

	function s(t) {
		var e;
		return function(t) {
			if (!(t instanceof s)) throw new TypeError("Cannot call a class as a function")
		}(this), e = this, (t = !(t = i(s).call(this, t)) || "object" !== r(t) && "function" !=
			typeof t ? function() {
				if (void 0 !== e) return e;
				throw new ReferenceError("this hasn't been initialised - super() hasn't been called")
			}() : t).blockUnits = [], t
	}
	e.a = n
}, function(t, e, n) {
	"use strict";
	var r = n(3),
		E = n(0);

	function i(t) {
		return (i = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(t) {
			return typeof t
		} : function(t) {
			return t && "function" == typeof Symbol && t.constructor === Symbol && t !== Symbol
				.prototype ? "symbol" : typeof t
		})(t)
	}

	function o(t, e, n) {
		return (o = "undefined" != typeof Reflect && Reflect.get ? Reflect.get : function(t, e, n) {
			t = function(t, e) {
				for (; !Object.prototype.hasOwnProperty.call(t, e) && null !== (t = s(t)););
				return t
			}(t, e);
			if (t) {
				e = Object.getOwnPropertyDescriptor(t, e);
				return e.get ? e.get.call(n) : e.value
			}
		})(t, e, n || t)
	}

	function s(t) {
		return (s = Object.setPrototypeOf ? Object.getPrototypeOf : function(t) {
			return t.__proto__ || Object.getPrototypeOf(t)
		})(t)
	}

	function a(t, e) {
		return (a = Object.setPrototypeOf || function(t, e) {
			return t.__proto__ = e, t
		})(t, e)
	}
	var T = [1116352408, 3609767458, 1899447441, 602891725, 3049323471, 3964484399, 3921009573, 2173295548,
			961987163, 4081628472, 1508970993, 3053834265, 2453635748, 2937671579, 2870763221, 3664609560,
			3624381080, 2734883394, 310598401, 1164996542, 607225278, 1323610764, 1426881987, 3590304994,
			1925078388, 4068182383, 2162078206, 991336113, 2614888103, 633803317, 3248222580, 3479774868,
			3835390401, 2666613458, 4022224774, 944711139, 264347078, 2341262773, 604807628, 2007800933,
			770255983, 1495990901, 1249150122, 1856431235, 1555081692, 3175218132, 1996064986, 2198950837,
			2554220882, 3999719339, 2821834349, 766784016, 2952996808, 2566594879, 3210313671, 3203337956,
			3336571891, 1034457026, 3584528711, 2466948901, 113926993, 3758326383, 338241895, 168717936,
			666307205, 1188179964, 773529912, 1546045734, 1294757372, 1522805485, 1396182291, 2643833823,
			1695183700, 2343527390, 1986661051, 1014477480, 2177026350, 1206759142, 2456956037, 344077627,
			2730485921, 1290863460, 2820302411, 3158454273, 3259730800, 3505952657, 3345764771, 106217008,
			3516065817, 3606008344, 3600352804, 1432725776, 4094571909, 1467031594, 275423344, 851169720,
			430227734, 3100823752, 506948616, 1363258195, 659060556, 3750685593, 883997877, 3785050280,
			958139571, 3318307427, 1322822218, 3812723403, 1537002063, 2003034995, 1747873779, 3602036899,
			1955562222, 1575990012, 2024104815, 1125592928, 2227730452, 2716904306, 2361852424, 442776044,
			2428436474, 593698344, 2756734187, 3733110249, 3204031479, 2999351573, 3329325298, 3815920427,
			3391569614, 3928383900, 3515267271, 566280711, 3940187606, 3454069534, 4118630271, 4000239992,
			116418474, 1914138554, 174292421, 2731055270, 289380356, 3203993006, 460393269, 320620315,
			685471733, 587496836, 852142971, 1086792851, 1017036298, 365543100, 1126000580, 2618297676,
			1288033470, 3409855158, 1501505948, 4234509866, 1607167915, 987167468, 1816402316, 1246189591
		],
		r = (function(t, e) {
			if ("function" != typeof e && null !== e) throw new TypeError(
				"Super expression must either be null or a function");
			t.prototype = Object.create(e && e.prototype, {
				constructor: {
					value: t,
					writable: !0,
					configurable: !0
				}
			}), e && a(t, e)
		}(u, r.a), r = [{
			key: "reset",
			value: function() {
				switch (o(s(u.prototype), "reset", this).call(this), this.options.length) {
					case 384:
						this.state.hash = [-876896931, -1056596264, 1654270250, 914150663, -
							1856437926, 812702999, 355462360, -150054599, 1731405415, -
							4191439, -1900787065, 1750603025, -619958771, 1694076839,
							1203062813, -1090891868
						];
						break;
					case 512:
						this.state.hash = [1779033703, -205731576, -1150833019, -2067093701,
							1013904242, -23791573, -1521486534, 1595750129, 1359893119, -
							1377402159, -1694144372, 725511199, 528734635, -79577749,
							1541459225, 327033209
						];
						break;
					default:
						for (var t = new u, e = 0; e < 16; e++) t.state.hash[e] = 2779096485 ^ t
							.state.hash[e];
						t.update("SHA-512/" + this.options.length);
						var n = t.finalize();
						this.state.hash = [];
						for (var r = 0; r < 64; r += 4) this.state.hash.push(n.charCodeAt(r) <<
							24 | n.charCodeAt(r + 1) << 16 | n.charCodeAt(r + 2) << 8 | n
							.charCodeAt(r + 3))
				}
			}
		}, {
			key: "processBlock",
			value: function(t) {
				for (var e, n, r, i, o = this.state.hash[0], s = this.state.hash[1], a = this
						.state.hash[2], u = this.state.hash[3], c = this.state.hash[4], l = this
						.state.hash[5], h = this.state.hash[6], f = this.state.hash[7], p = this
						.state.hash[8], d = this.state.hash[9], g = this.state.hash[10], m =
						this.state.hash[11], v = this.state.hash[12], y = this.state.hash[13],
						b = this.state.hash[14], w = this.state.hash[15], _ = 0; _ < this
					.options.rounds; _ += 2) {
					_ < 32 ? (this.W[_] = t[_], this.W[_ + 1] = t[_ + 1]) : (e = Object(E.c)(
								this.W[_ - 30], this.W[_ - 29], 1) ^ Object(E.c)(this.W[_ - 30],
								this.W[_ - 29], 8) ^ this.W[_ - 30] >>> 7, n = Object(E.d)(this
								.W[_ - 30], this.W[_ - 29], 1) ^ Object(E.d)(this.W[_ - 30],
								this.W[_ - 29], 8) ^ (this.W[_ - 29] >>> 7 | this.W[_ - 30] <<
								25), r = Object(E.c)(this.W[_ - 4], this.W[_ - 3], 19) ^ Object(
								E.c)(this.W[_ - 4], this.W[_ - 3], 61) ^ this.W[_ - 4] >>> 6,
							i = Object(E.d)(this.W[_ - 4], this.W[_ - 3], 19) ^ Object(E.d)(this
								.W[_ - 4], this.W[_ - 3], 61) ^ (this.W[_ - 3] >>> 6 | this.W[
								_ - 4] << 26), S = (65535 & this.W[_ - 13]) + (65535 & this.W[
								_ - 31]) + (65535 & n) + (65535 & i) | 0, O = (this.W[_ -
								13] >>> 16) + (this.W[_ - 31] >>> 16) + (n >>> 16) + (i >>>
							16) + (S >>> 16) | 0, k = (65535 & this.W[_ - 14]) + (65535 & this
								.W[_ - 32]) + (65535 & e) + (65535 & r) + (O >>> 16) | 0, C = (
								this.W[_ - 14] >>> 16) + (this.W[_ - 32] >>> 16) + (e >>> 16) +
							(r >>> 16) + (k >>> 16) | 0, this.W[_] = 4294967295 & (C << 16 |
								65535 & k), this.W[_ + 1] = 4294967295 & (O << 16 | 65535 & S)),
						e = Object(E.c)(o, s, 28) ^ Object(E.c)(o, s, 34) ^ Object(E.c)(o, s,
							39), n = Object(E.d)(o, s, 28) ^ Object(E.d)(o, s, 34) ^ Object(E.d)
						(o, s, 39);
					var x = d & m ^ ~d & y,
						C = o & a ^ o & c ^ a & c,
						k = s & u ^ s & l ^ u & l,
						S = (S = (S = b + (r = Object(E.c)(p, d, 14) ^ Object(E.c)(p, d, 18) ^
							Object(E.c)(p, d, 41)) + ((O = w + (i = Object(E.d)(p, d,
							14) ^ Object(E.d)(p, d, 18) ^ Object(E.d)(p, d,
							41)) | 0) >>> 0 < w >>> 0 ? 1 : 0) | 0) + (p & g ^ ~p & v) + ((
							O = O + x | 0) >>> 0 < x >>> 0 ? 1 : 0) | 0) + T[_] + ((O = O + T[
							_ + 1] | 0) >>> 0 < T[_ + 1] >>> 0 ? 1 : 0) | 0,
						O = O + this.W[_ + 1] | 0,
						k = n + k | 0,
						b = v,
						w = y,
						v = g,
						y = m,
						g = p,
						m = d,
						p = h + (S = S + this.W[_] + (O >>> 0 < this.W[_ + 1] >>> 0 ? 1 : 0) |
							0) + ((d = f + O | 0) >>> 0 < f >>> 0 ? 1 : 0) | 0,
						h = c,
						f = l,
						c = a,
						l = u,
						a = o,
						u = s,
						o = S + (e + C + (k >>> 0 < n >>> 0 ? 1 : 0) | 0) + ((s = O + k | 0) >>>
							0 < O >>> 0 ? 1 : 0) | 0
				}
				this.state.hash[1] = this.state.hash[1] + s | 0, this.state.hash[0] = this.state
					.hash[0] + o + (this.state.hash[1] >>> 0 < s >>> 0 ? 1 : 0) | 0, this.state
					.hash[3] = this.state.hash[3] + u | 0, this.state.hash[2] = this.state.hash[
						2] + a + (this.state.hash[3] >>> 0 < u >>> 0 ? 1 : 0) | 0, this.state
					.hash[5] = this.state.hash[5] + l | 0, this.state.hash[4] = this.state.hash[
						4] + c + (this.state.hash[5] >>> 0 < l >>> 0 ? 1 : 0) | 0, this.state
					.hash[7] = this.state.hash[7] + f | 0, this.state.hash[6] = this.state.hash[
						6] + h + (this.state.hash[7] >>> 0 < f >>> 0 ? 1 : 0) | 0, this.state
					.hash[9] = this.state.hash[9] + d | 0, this.state.hash[8] = this.state.hash[
						8] + p + (this.state.hash[9] >>> 0 < d >>> 0 ? 1 : 0) | 0, this.state
					.hash[11] = this.state.hash[11] + m | 0, this.state.hash[10] = this.state
					.hash[10] + g + (this.state.hash[11] >>> 0 < m >>> 0 ? 1 : 0) | 0, this
					.state.hash[13] = this.state.hash[13] + y | 0, this.state.hash[12] = this
					.state.hash[12] + v + (this.state.hash[13] >>> 0 < y >>> 0 ? 1 : 0) | 0,
					this.state.hash[15] = this.state.hash[15] + w | 0, this.state.hash[14] =
					this.state.hash[14] + b + (this.state.hash[15] >>> 0 < w >>> 0 ? 1 : 0) | 0
			}
		}, {
			key: "finalize",
			value: function() {
				return this.addPaddingISO7816(this.state.message.length < 112 ? 112 - this.state
						.message.length | 0 : 240 - this.state.message.length | 0), this.state
					.message += "\0\0\0\0\0\0\0\0", this.addLengthBits(), this.process(), this
					.getStateHash(this.options.length / 32 | 0)
			}
		}], function(t, e) {
			for (var n = 0; n < e.length; n++) {
				var r = e[n];
				r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !
					0), Object.defineProperty(t, r.key, r)
			}
		}(u.prototype, r), u);

	function u(t) {
		var e;
		return function(t) {
			if (!(t instanceof u)) throw new TypeError("Cannot call a class as a function")
		}(this), (t = t || {}).length = t.length || 512, t.rounds = t.rounds || 160, e = this, (t = !(
			t = s(u).call(this, t)) || "object" !== i(t) && "function" != typeof t ? function() {
			if (void 0 !== e) return e;
			throw new ReferenceError("this hasn't been initialised - super() hasn't been called")
		}() : t).blockSize = 32, t.blockSizeInBytes = t.blockSize * t.unitSize, t.W = new Array(160), t
	}
	e.a = r
}, function(t, e, n) {
	"use strict";
	var r = n(3),
		f = n(0);

	function i(t) {
		return (i = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(t) {
			return typeof t
		} : function(t) {
			return t && "function" == typeof Symbol && t.constructor === Symbol && t !== Symbol
				.prototype ? "symbol" : typeof t
		})(t)
	}

	function o(t, e, n) {
		return (o = "undefined" != typeof Reflect && Reflect.get ? Reflect.get : function(t, e, n) {
			t = function(t, e) {
				for (; !Object.prototype.hasOwnProperty.call(t, e) && null !== (t = s(t)););
				return t
			}(t, e);
			if (t) {
				e = Object.getOwnPropertyDescriptor(t, e);
				return e.get ? e.get.call(n) : e.value
			}
		})(t, e, n || t)
	}

	function s(t) {
		return (s = Object.setPrototypeOf ? Object.getPrototypeOf : function(t) {
			return t.__proto__ || Object.getPrototypeOf(t)
		})(t)
	}

	function a(t, e) {
		return (a = Object.setPrototypeOf || function(t, e) {
			return t.__proto__ = e, t
		})(t, e)
	}
	var p = [1116352408, 1899447441, 3049323471, 3921009573, 961987163, 1508970993, 2453635748, 2870763221,
			3624381080, 310598401, 607225278, 1426881987, 1925078388, 2162078206, 2614888103, 3248222580,
			3835390401, 4022224774, 264347078, 604807628, 770255983, 1249150122, 1555081692, 1996064986,
			2554220882, 2821834349, 2952996808, 3210313671, 3336571891, 3584528711, 113926993, 338241895,
			666307205, 773529912, 1294757372, 1396182291, 1695183700, 1986661051, 2177026350, 2456956037,
			2730485921, 2820302411, 3259730800, 3345764771, 3516065817, 3600352804, 4094571909, 275423344,
			430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779,
			1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298
		],
		r = (function(t, e) {
			if ("function" != typeof e && null !== e) throw new TypeError(
				"Super expression must either be null or a function");
			t.prototype = Object.create(e && e.prototype, {
				constructor: {
					value: t,
					writable: !0,
					configurable: !0
				}
			}), e && a(t, e)
		}(u, r.a), function(t, e) {
			for (var n = 0; n < e.length; n++) {
				var r = e[n];
				r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !
					0), Object.defineProperty(t, r.key, r)
			}
		}(u.prototype, [{
			key: "reset",
			value: function() {
				224 === (o(s(u.prototype), "reset", this).call(this), this.options.length) ?
					this.state.hash = [-1056596264, 914150663, 812702999, -150054599, -
						4191439, 1750603025, 1694076839, -1090891868
					] : this.state.hash = [1779033703, -1150833019, 1013904242, -1521486534,
						1359893119, -1694144372, 528734635, 1541459225
					]
			}
		}, {
			key: "processBlock",
			value: function(t) {
				for (var e = 0 | this.state.hash[0], n = 0 | this.state.hash[1], r = 0 |
						this.state.hash[2], i = 0 | this.state.hash[3], o = 0 | this.state
						.hash[4], s = 0 | this.state.hash[5], a = 0 | this.state.hash[6],
						u = 0 | this.state.hash[7], c = 0; c < this.options.rounds; c++) {
					this.W[c] = c < 16 ? 0 | t[c] : this.W[c - 16] + (Object(f.b)(this.W[c -
							15], 7) ^ Object(f.b)(this.W[c - 15], 18) ^ this.W[c -
						15] >>> 3) + this.W[c - 7] + (Object(f.b)(this.W[c - 2], 17) ^
						Object(f.b)(this.W[c - 2], 19) ^ this.W[c - 2] >>> 10) | 0;
					var l = u + (Object(f.b)(o, 6) ^ Object(f.b)(o, 11) ^ Object(f.b)(o,
							25)) + (o & s ^ ~o & a) + p[c] + this.W[c] | 0,
						h = (Object(f.b)(e, 2) ^ Object(f.b)(e, 13) ^ Object(f.b)(e, 22)) +
						(e & n ^ e & r ^ n & r) | 0,
						u = a,
						a = s,
						s = o,
						o = i + l | 0,
						i = r,
						r = n,
						n = e,
						e = l + h | 0
				}
				this.state.hash[0] = this.state.hash[0] + e | 0, this.state.hash[1] = this
					.state.hash[1] + n | 0, this.state.hash[2] = this.state.hash[2] + r | 0,
					this.state.hash[3] = this.state.hash[3] + i | 0, this.state.hash[4] =
					this.state.hash[4] + o | 0, this.state.hash[5] = this.state.hash[5] +
					s | 0, this.state.hash[6] = this.state.hash[6] + a | 0, this.state.hash[
						7] = this.state.hash[7] + u | 0
			}
		}, {
			key: "finalize",
			value: function() {
				return this.addPaddingISO7816(this.state.message.length < 56 ? 56 - this
						.state.message.length | 0 : 120 - this.state.message.length | 0),
					this.addLengthBits(), this.process(), this.getStateHash(this.options
						.length / 32 | 0)
			}
		}]), u);

	function u(t) {
		var e;
		return function(t) {
			if (!(t instanceof u)) throw new TypeError("Cannot call a class as a function")
		}(this), (t = t || {}).length = t.length || 256, t.rounds = t.rounds || 64, e = this, (t = !(t =
			s(u).call(this, t)) || "object" !== i(t) && "function" != typeof t ? function() {
			if (void 0 !== e) return e;
			throw new ReferenceError("this hasn't been initialised - super() hasn't been called")
		}() : t).W = new Array(64), t
	}
	e.a = r
}, function(t, e, n) {
	"use strict";
	var r = n(5),
		d = n(0);

	function i(t) {
		return (i = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(t) {
			return typeof t
		} : function(t) {
			return t && "function" == typeof Symbol && t.constructor === Symbol && t !== Symbol
				.prototype ? "symbol" : typeof t
		})(t)
	}

	function o(t, e) {
		for (var n = 0; n < e.length; n++) {
			var r = e[n];
			r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0),
				Object.defineProperty(t, r.key, r)
		}
	}

	function s(t, e, n) {
		return (s = "undefined" != typeof Reflect && Reflect.get ? Reflect.get : function(t, e, n) {
			t = function(t, e) {
				for (; !Object.prototype.hasOwnProperty.call(t, e) && null !== (t = a(t)););
				return t
			}(t, e);
			if (t) {
				e = Object.getOwnPropertyDescriptor(t, e);
				return e.get ? e.get.call(n) : e.value
			}
		})(t, e, n || t)
	}

	function a(t) {
		return (a = Object.setPrototypeOf ? Object.getPrototypeOf : function(t) {
			return t.__proto__ || Object.getPrototypeOf(t)
		})(t)
	}

	function u(t, e) {
		return (u = Object.setPrototypeOf || function(t, e) {
			return t.__proto__ = e, t
		})(t, e)
	}
	var g = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5,
			2, 14, 11, 8, 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12, 1, 9, 11, 10, 0, 8, 12, 4,
			13, 3, 7, 15, 14, 5, 6, 2, 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13
		],
		m = [5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12, 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12,
			4, 9, 1, 2, 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13, 8, 6, 4, 1, 3, 11, 15, 0, 5,
			12, 2, 13, 9, 7, 10, 14, 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11
		],
		v = [11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8, 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15,
			9, 11, 7, 13, 12, 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5, 11, 12, 14, 15, 14,
			15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12, 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6
		],
		y = [8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6, 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12,
			7, 6, 15, 13, 11, 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5, 15, 5, 8, 11, 14, 14,
			6, 14, 6, 9, 12, 9, 12, 5, 15, 8, 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11
		],
		n = (function(t, e) {
			if ("function" != typeof e && null !== e) throw new TypeError(
				"Super expression must either be null or a function");
			t.prototype = Object.create(e && e.prototype, {
				constructor: {
					value: t,
					writable: !0,
					configurable: !0
				}
			}), e && u(t, e)
		}(b, r.a), n = [{
			key: "F",
			value: function(t, e, n) {
				return t ^ e ^ n
			}
		}, {
			key: "G",
			value: function(t, e, n) {
				return t & e | ~t & n
			}
		}, {
			key: "H",
			value: function(t, e, n) {
				return (t | ~e) ^ n
			}
		}, {
			key: "I",
			value: function(t, e, n) {
				return t & n | e & ~n
			}
		}, {
			key: "J",
			value: function(t, e, n) {
				return t ^ (e | ~n)
			}
		}, {
			key: "T",
			value: function(t, e, n, r) {
				return t < 16 ? this.F(e, n, r) : t < 32 ? this.G(e, n, r) + 1518500249 | 0 :
					t < 48 ? this.H(e, n, r) + 1859775393 | 0 : t < 64 ? this.I(e, n, r) +
					2400959708 | 0 : this.J(e, n, r) + 2840853838 | 0
			}
		}, {
			key: "T64",
			value: function(t, e, n, r) {
				return t < 16 ? this.I(e, n, r) + 1352829926 | 0 : t < 32 ? this.H(e, n, r) +
					1548603684 | 0 : t < 48 ? this.G(e, n, r) + 1836072691 | 0 : this.F(e, n, r)
			}
		}, {
			key: "T80",
			value: function(t, e, n, r) {
				return t < 16 ? this.J(e, n, r) + 1352829926 | 0 : t < 32 ? this.I(e, n, r) +
					1548603684 | 0 : t < 48 ? this.H(e, n, r) + 1836072691 | 0 : t < 64 ? this
					.G(e, n, r) + 2053994217 | 0 : this.F(e, n, r)
			}
		}], o((r = b).prototype, [{
			key: "reset",
			value: function() {
				switch (s(a(b.prototype), "reset", this).call(this), this.options.length) {
					case 128:
						this.state.hash = [1732584193, 4023233417, 2562383102, 271733878],
							this.processBlock = this.processBlock128;
						break;
					case 256:
						this.state.hash = [1732584193, 4023233417, 2562383102, 271733878,
							1985229328, 4275878552, 2309737967, 19088743
						], this.processBlock = this.processBlock256;
						break;
					case 320:
						this.state.hash = [1732584193, 4023233417, 2562383102, 271733878,
							3285377520, 1985229328, 4275878552, 2309737967, 19088743,
							1009589775
						], this.processBlock = this.processBlock320;
						break;
					default:
						this.state.hash = [1732584193, 4023233417, 2562383102, 271733878,
							3285377520
						], this.processBlock = this.processBlock160
				}
			}
		}, {
			key: "processBlock128",
			value: function(t) {
				for (var e = a = 0 | this.state.hash[0], n = l = 0 | this.state.hash[1], r =
						c = 0 | this.state.hash[2], i = u = 0 | this.state.hash[3], o =
						0; o < 64; o++) {
					var s = (s = a + t[g[o]] | 0) + b.T(o, l, c, u) | 0,
						a = u,
						u = c,
						c = l,
						l = s = Object(d.a)(s, v[o]);
					s = (s = e + t[m[o]] | 0) + b.T64(o, n, r, i) | 0, e = i, i = r, r = n,
						n = s = Object(d.a)(s, y[o])
				}
				var h = this.state.hash[1] + c + i | 0;
				this.state.hash[1] = this.state.hash[2] + u + e | 0, this.state.hash[2] =
					this.state.hash[3] + a + n | 0, this.state.hash[3] = this.state.hash[
					0] + l + r | 0, this.state.hash[0] = h
			}
		}, {
			key: "processBlock160",
			value: function(t) {
				for (var e = 0 | this.state.hash[0], n = 0 | this.state.hash[1], r = 0 |
						this.state.hash[2], i = 0 | this.state.hash[3], o = 0 | this.state
						.hash[4], s = e, a = n, u = r, c = i, l = o, h = 0; h < 80; h++) {
					var f = (f = e + t[g[h]] | 0) + b.T(h, n, r, i) | 0;
					f = (f = Object(d.a)(f, v[h])) + o | 0, e = o, o = i, i = Object(d.a)(r,
							10), r = n, n = f, f = (f = s + t[m[h]] | 0) + b.T80(h, a, u,
						c) | 0, f = (f = Object(d.a)(f, y[h])) + l | 0, s = l, l = c, c =
						Object(d.a)(u, 10), u = a, a = f
				}
				var p = this.state.hash[1] + r + c | 0;
				this.state.hash[1] = this.state.hash[2] + i + l | 0, this.state.hash[2] =
					this.state.hash[3] + o + s | 0, this.state.hash[3] = this.state.hash[
					4] + e + a | 0, this.state.hash[4] = this.state.hash[0] + n + u | 0,
					this.state.hash[0] = p
			}
		}, {
			key: "processBlock256",
			value: function(t) {
				for (var e = 0 | this.state.hash[0], n = 0 | this.state.hash[1], r = 0 |
						this.state.hash[2], i = 0 | this.state.hash[3], o = 0 | this.state
						.hash[4], s = 0 | this.state.hash[5], a = 0 | this.state.hash[6],
						u = 0 | this.state.hash[7], c = 0; c < 64; c += 1) {
					var l = (l = e + t[g[c]] | 0) + b.T(c, n, r, i) | 0,
						e = i,
						i = r,
						r = n,
						n = l = Object(d.a)(l, v[c]);
					switch (l = (l = o + t[m[c]] | 0) + b.T64(c, s, a, u) | 0, o = u, u = a,
						a = s, s = l = Object(d.a)(l, y[c]), c) {
						case 15:
							l = e, e = o, o = l;
							break;
						case 31:
							l = n, n = s, s = l;
							break;
						case 47:
							l = r, r = a, a = l;
							break;
						case 63:
							l = i, i = u, u = l
					}
				}
				this.state.hash[0] = this.state.hash[0] + e | 0, this.state.hash[1] = this
					.state.hash[1] + n | 0, this.state.hash[2] = this.state.hash[2] + r | 0,
					this.state.hash[3] = this.state.hash[3] + i | 0, this.state.hash[4] =
					this.state.hash[4] + o | 0, this.state.hash[5] = this.state.hash[5] +
					s | 0, this.state.hash[6] = this.state.hash[6] + a | 0, this.state.hash[
						7] = this.state.hash[7] + u | 0
			}
		}, {
			key: "processBlock320",
			value: function(t) {
				for (var e = 0 | this.state.hash[0], n = 0 | this.state.hash[1], r = 0 |
						this.state.hash[2], i = 0 | this.state.hash[3], o = 0 | this.state
						.hash[4], s = 0 | this.state.hash[5], a = 0 | this.state.hash[6],
						u = 0 | this.state.hash[7], c = 0 | this.state.hash[8], l = 0 | this
						.state.hash[9], h = 0; h < 80; h += 1) {
					var f = (f = e + t[g[h]] | 0) + b.T(h, n, r, i) | 0;
					switch (f = (f = Object(d.a)(f, v[h])) + o | 0, e = o, o = i, i =
						Object(d.a)(r, 10), r = n, n = f, f = (f = s + t[m[h]] | 0) + b.T80(
							h, a, u, c) | 0, f = (f = Object(d.a)(f, y[h])) + l | 0, s = l,
						l = c, c = Object(d.a)(u, 10), u = a, a = f, h) {
						case 15:
							f = n, n = a, a = f;
							break;
						case 31:
							f = i, i = c, c = f;
							break;
						case 47:
							f = e, e = s, s = f;
							break;
						case 63:
							f = r, r = u, u = f;
							break;
						case 79:
							f = o, o = l, l = f
					}
				}
				this.state.hash[0] = this.state.hash[0] + e | 0, this.state.hash[1] = this
					.state.hash[1] + n | 0, this.state.hash[2] = this.state.hash[2] + r | 0,
					this.state.hash[3] = this.state.hash[3] + i | 0, this.state.hash[4] =
					this.state.hash[4] + o | 0, this.state.hash[5] = this.state.hash[5] +
					s | 0, this.state.hash[6] = this.state.hash[6] + a | 0, this.state.hash[
						7] = this.state.hash[7] + u | 0, this.state.hash[8] = this.state
					.hash[8] + c | 0, this.state.hash[9] = this.state.hash[9] + l | 0
			}
		}, {
			key: "finalize",
			value: function() {
				return this.addPaddingISO7816(this.state.message.length < 56 ? 56 - this
						.state.message.length | 0 : 120 - this.state.message.length | 0),
					this.addLengthBits(), this.process(), this.getStateHash()
			}
		}]), o(r, n), b);

	function b(t) {
		return function(t) {
				if (!(t instanceof b)) throw new TypeError("Cannot call a class as a function")
			}(this), (t = t || {}).length = t.length || 160, e = this, !(t = a(b).call(this, t)) ||
			"object" !== i(t) && "function" != typeof t ? function() {
				if (void 0 !== e) return e;
				throw new ReferenceError("this hasn't been initialised - super() hasn't been called")
			}() : t;
		var e
	}
	e.a = n
}, function(t, e, n) {
	"use strict";
	var r = n(3),
		c = n(0);

	function i(t) {
		return (i = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(t) {
			return typeof t
		} : function(t) {
			return t && "function" == typeof Symbol && t.constructor === Symbol && t !== Symbol
				.prototype ? "symbol" : typeof t
		})(t)
	}

	function o(t, e, n) {
		return (o = "undefined" != typeof Reflect && Reflect.get ? Reflect.get : function(t, e, n) {
			t = function(t, e) {
				for (; !Object.prototype.hasOwnProperty.call(t, e) && null !== (t = s(t)););
				return t
			}(t, e);
			if (t) {
				e = Object.getOwnPropertyDescriptor(t, e);
				return e.get ? e.get.call(n) : e.value
			}
		})(t, e, n || t)
	}

	function s(t) {
		return (s = Object.setPrototypeOf ? Object.getPrototypeOf : function(t) {
			return t.__proto__ || Object.getPrototypeOf(t)
		})(t)
	}

	function a(t, e) {
		return (a = Object.setPrototypeOf || function(t, e) {
			return t.__proto__ = e, t
		})(t, e)
	}
	var u = [10097, 32533, 76520, 13586, 34673, 54876, 80959, 9117, 39292, 74945, 37542, 4805, 64894, 74296,
			24805, 24037, 20636, 10402, 822, 91665, 8422, 68953, 19645, 9303, 23209, 2560, 15953, 34764,
			35080, 33606, 99019, 2529, 9376, 70715, 38311, 31165, 88676, 74397, 4436, 27659, 12807, 99970,
			80157, 36147, 64032, 36653, 98951, 16877, 12171, 76833, 66065, 74717, 34072, 76850, 36697,
			36170, 65813, 39885, 11199, 29170, 31060, 10805, 45571, 82406, 35303, 42614, 86799, 7439, 23403,
			9732, 85269, 77602, 2051, 65692, 68665, 74818, 73053, 85247, 18623, 88579, 63573, 32135, 5325,
			47048, 90553, 57548, 28468, 28709, 83491, 25624, 73796, 45753, 3529, 64778, 35808, 34282, 60935,
			20344, 35273, 88435, 98520, 17767, 14905, 68607, 22109, 40558, 60970, 93433, 50500, 73998,
			11805, 5431, 39808, 27732, 50725, 68248, 29405, 24201, 52775, 67851, 83452, 99634, 6288, 98083,
			13746, 70078, 18475, 40610, 68711, 77817, 88685, 40200, 86507, 58401, 36766, 67951, 90364,
			76493, 29609, 11062, 99594, 67348, 87517, 64969, 91826, 8928, 93785, 61368, 23478, 34113, 65481,
			17674, 17468, 50950, 58047, 76974, 73039, 57186, 40218, 16544, 80124, 35635, 17727, 8015, 45318,
			22374, 21115, 78253, 14385, 53763, 74350, 99817, 77402, 77214, 43236, 210, 45521, 64237, 96286,
			2655, 69916, 26803, 66252, 29148, 36936, 87203, 76621, 13990, 94400, 56418, 9893, 20505, 14225,
			68514, 46427, 56788, 96297, 78822, 54382, 14598, 91499, 14523, 68479, 27686, 46162, 83554,
			94750, 89923, 37089, 20048, 80336, 94598, 26940, 36858, 70297, 34135, 53140, 33340, 42050,
			82341, 44104, 81949, 85157, 47954, 32979, 26575, 57600, 40881, 22222, 6413, 12550, 73742, 11100,
			2040, 12860, 74697, 96644, 89439, 28707, 25815, 63606, 49329, 16505, 34484, 40219, 52563, 43651,
			77082, 7207, 31790, 61196, 90446, 26457, 47774, 51924, 33729, 65394, 59593, 42582, 60527, 15474,
			45266, 95270, 79953, 59367, 83848, 82396, 10118, 33211, 59466, 94557, 28573, 67897, 54387,
			54622, 44431, 91190, 42592, 92927, 45973, 42481, 16213, 97344, 8721, 16868, 48767, 3071, 12059,
			25701, 46670, 23523, 78317, 73208, 89837, 68935, 91416, 26252, 29663, 5522, 82562, 4493, 52494,
			75246, 33824, 45862, 51025, 61962, 79335, 65337, 12472, 549, 97654, 64051, 88159, 96119, 63896,
			54692, 82391, 23287, 29529, 35963, 15307, 26898, 9354, 33351, 35462, 77974, 50024, 90103, 39333,
			59808, 8391, 45427, 26842, 83609, 49700, 13021, 24892, 78565, 20106, 46058, 85236, 1390, 92286,
			77281, 44077, 93910, 83647, 70617, 42941, 32179, 597, 87379, 25241, 5567, 7007, 86743, 17157,
			85394, 11838, 69234, 61406, 20117, 45204, 15956, 6e4, 18743, 92423, 97118, 96338, 19565, 41430,
			1758, 75379, 40419, 21585, 66674, 36806, 84962, 85207, 45155, 14938, 19476, 7246, 43667, 94543,
			59047, 90033, 20826, 69541, 94864, 31994, 36168, 10851, 34888, 81553, 1540, 35456, 5014, 51176,
			98086, 24826, 45240, 28404, 44999, 8896, 39094, 73407, 35441, 31880, 33185, 16232, 41941, 50949,
			89435, 48581, 88695, 41994, 37548, 73043, 80951, 406, 96382, 70774, 20151, 23387, 25016, 25298,
			94624, 61171, 79752, 49140, 71961, 28296, 69861, 2591, 74852, 20539, 387, 59579, 18633, 32537,
			98145, 6571, 31010, 24674, 5455, 61427, 77938, 91936, 74029, 43902, 77557, 32270, 97790, 17119,
			52527, 58021, 80814, 51748, 54178, 45611, 80993, 37143, 5335, 12969, 56127, 19255, 36040, 90324,
			11664, 49883, 52079, 84827, 59381, 71539, 9973, 33440, 88461, 23356, 48324, 77928, 31249, 64710,
			2295, 36870, 32307, 57546, 15020, 9994, 69074, 94138, 87637, 91976, 35584, 4401, 10518, 21615,
			1848, 76938, 9188, 20097, 32825, 39527, 4220, 86304, 83389, 87374, 64278, 58044, 90045, 85497,
			51981, 50654, 94938, 81997, 91870, 76150, 68476, 64659, 73189, 50207, 47677, 26269, 62290,
			64464, 27124, 67018, 41361, 82760, 75768, 76490, 20971, 87749, 90429, 12272, 95375, 5871, 93823,
			43178, 54016, 44056, 66281, 31003, 682, 27398, 20714, 53295, 7706, 17813, 8358, 69910, 78542,
			42785, 13661, 58873, 4618, 97553, 31223, 8420, 28306, 3264, 81333, 10591, 40510, 7893, 32604,
			60475, 94119, 1840, 53840, 86233, 81594, 13628, 51215, 90290, 28466, 68795, 77762, 20791, 91757,
			53741, 61613, 62269, 50263, 90212, 55781, 76514, 83483, 47055, 89415, 92694, 397, 58391, 12607,
			17646, 48949, 72306, 94541, 37408, 77513, 3820, 86864, 29901, 68414, 82774, 51908, 13980, 72893,
			55507, 19502, 37174, 69979, 20288, 55210, 29773, 74287, 75251, 65344, 67415, 21818, 59313,
			93278, 81757, 5686, 73156, 7082, 85046, 31853, 38452, 51474, 66499, 68107, 23621, 94049, 91345,
			42836, 9191, 8007, 45449, 99559, 68331, 62535, 24170, 69777, 12830, 74819, 78142, 43860, 72834,
			33713, 48007, 93584, 72869, 51926, 64721, 58303, 29822, 93174, 93972, 85274, 86893, 11303,
			22970, 28834, 34137, 73515, 90400, 71148, 43643, 84133, 89640, 44035, 52166, 73852, 70091,
			61222, 60561, 62327, 18423, 56732, 16234, 17395, 96131, 10123, 91622, 85496, 57560, 81604,
			18880, 65138, 56806, 87648, 85261, 34313, 65861, 45875, 21069, 85644, 47277, 38001, 2176, 81719,
			11711, 71602, 92937, 74219, 64049, 65584, 49698, 37402, 96397, 1304, 77586, 56271, 10086, 47324,
			62605, 40030, 37438, 97125, 40348, 87083, 31417, 21815, 39250, 75237, 62047, 15501, 29578,
			21826, 41134, 47143, 34072, 64638, 85902, 49139, 6441, 3856, 54552, 73135, 42742, 95719, 9035,
			85794, 74296, 8789, 88156, 64691, 19202, 7638, 77929, 3061, 18072, 96207, 44156, 23821, 99538,
			4713, 66994, 60528, 83441, 7954, 19814, 59175, 20695, 5533, 52139, 61212, 6455, 83596, 35655,
			6958, 92983, 5128, 9719, 77433, 53783, 92301, 50498, 10850, 62746, 99599, 10507, 13499, 6319,
			53075, 71839, 6410, 19362, 39820, 98952, 43622, 63147, 64421, 80814, 43800, 9351, 31024, 73167,
			59580, 6478, 75569, 78800, 88835, 54486, 23768, 6156, 4111, 8408, 38508, 7341, 23793, 48763,
			90822, 97022, 17719, 4207, 95954, 49953, 30692, 70668, 94688, 16127, 56196, 80091, 82067, 63400,
			5462, 69200, 65443, 95659, 18288, 27437, 49632, 24041, 8337, 65676, 96299, 90836, 27267, 50264,
			13192, 72294, 7477, 44606, 17985, 48911, 97341, 30358, 91307, 6991, 19072, 24210, 36699, 53728,
			28825, 35793, 28976, 66252, 68434, 94688, 84473, 13622, 62126, 98408, 12843, 82590, 9815, 93146,
			48908, 15877, 54745, 24591, 35700, 4754, 83824, 52692, 54130, 55160, 6913, 45197, 42672, 78601,
			11883, 9528, 63011, 98901, 14974, 40344, 10455, 16019, 14210, 33712, 91342, 37821, 88325, 80851,
			43667, 70883, 12883, 97343, 65027, 61184, 4285, 1392, 17974, 15077, 90712, 26769, 21778, 30976,
			38807, 36961, 31649, 42096, 63281, 2023, 8816, 47449, 19523, 59515, 65122, 59659, 86283, 68258,
			69572, 13798, 16435, 91529, 67245, 52670, 35583, 16563, 79246, 86686, 76463, 34222, 26655,
			90802, 60584, 47377, 7500, 37992, 45134, 26529, 26760, 83637, 41326, 44344, 53853, 41377, 36066,
			94850, 58838, 73859, 49364, 73331, 96240, 43642, 24637, 38736, 74384, 89342, 52623, 7992, 12369,
			18601, 3742, 83873, 83080, 12451, 38992, 22815, 7759, 51777, 97377, 27585, 51972, 37867, 16444,
			24334, 36151, 99073, 27493, 70939, 85130, 32552, 54846, 54759, 60790, 18157, 57178, 65762,
			11161, 78576, 45819, 52979, 65130, 4860, 3991, 10461, 93716, 16894, 66083, 24653, 84609, 58232,
			88618, 19161, 38555, 95554, 32886, 59780, 8355, 60860, 29735, 47762, 71299, 23853, 17546, 73704,
			92052, 46215, 55121, 29281, 59076, 7936, 27954, 58909, 32643, 52861, 95819, 6831, 911, 98936,
			76355, 93779, 80863, 514, 69572, 68777, 39510, 35905, 14060, 40619, 29549, 69616, 33564, 60780,
			24122, 66591, 27699, 6494, 14845, 46672, 61958, 77100, 90899, 75754, 61196, 30231, 92962, 61773,
			41839, 55382, 17267, 70943, 78038, 70267, 30532, 21704, 10274, 12202, 39685, 23309, 10061,
			68829, 55986, 66485, 3788, 97599, 75867, 20717, 74416, 53166, 35208, 33374, 87539, 8823, 48228,
			63379, 85783, 47619, 53152, 67433, 35663, 52972, 16818, 60311, 60365, 94653, 35075, 33949,
			42614, 29297, 1918, 28316, 98953, 73231, 83799, 42402, 56623, 34442, 34994, 41374, 70071, 14736,
			9958, 18065, 32960, 7405, 36409, 83232, 99385, 41600, 11133, 7586, 15917, 6253, 19322, 53845,
			57620, 52606, 66497, 68646, 78138, 66559, 19640, 99413, 11220, 94747, 7399, 37408, 48509, 23929,
			27482, 45476, 85244, 35159, 31751, 57260, 68980, 5339, 15470, 48355, 88651, 22596, 3152, 19121,
			88492, 99382, 14454, 4504, 20094, 98977, 74843, 93413, 22109, 78508, 30934, 47744, 7481, 83828,
			73788, 6533, 28597, 20405, 94205, 20380, 22888, 48893, 27499, 98748, 60530, 45128, 74022, 84617,
			82037, 10268, 78212, 16993, 35902, 91386, 44372, 15486, 65741, 14014, 87481, 37220, 41849,
			84547, 46850, 52326, 34677, 58300, 74910, 64345, 19325, 81549, 46352, 33049, 69248, 93460,
			45305, 7521, 61318, 31855, 14413, 70951, 11087, 96294, 14013, 31792, 59747, 67277, 76503, 34513,
			39663, 77544, 52701, 8337, 56303, 87315, 16520, 69676, 11654, 99893, 2181, 68161, 57275, 36898,
			81304, 48585, 68652, 27376, 92852, 55866, 88448, 3584, 20857, 73156, 70284, 24326, 79375, 95220,
			1159, 63267, 10622, 48391, 15633, 84924, 90415, 93614, 33521, 26665, 55823, 47641, 86225, 31704,
			92694, 48297, 39904, 2115, 59589, 49067, 66821, 41575, 49767, 4037, 77613, 19019, 88152, 80,
			20554, 91409, 96277, 48257, 50816, 97616, 38688, 32486, 45134, 63545, 59404, 72059, 43947,
			51680, 43852, 59693, 25163, 1889, 70014, 15021, 41290, 67312, 71857, 15957, 68971, 11403, 65251,
			7629, 37239, 33295, 5870, 1119, 92784, 26340, 18477, 65622, 36815, 43625, 18637, 37509, 82444,
			99005, 4921, 73701, 14707, 93997, 64397, 11692, 5327, 82162, 20247, 81759, 45197, 25332, 83745,
			22567, 4515, 25624, 95096, 67946, 48460, 85558, 15191, 18782, 16930, 33361, 83761, 60873, 43253,
			84145, 60833, 25983, 1291, 41349, 20368, 7126, 14387, 6345, 80854, 9279, 43529, 6318, 38384,
			74761, 41196, 37480, 51321, 92246, 80088, 77074, 88722, 56736, 66164, 49431, 66919, 31678,
			72472, 8, 80890, 18002, 94813, 31900, 54155, 83436, 35352, 54131, 5466, 55306, 93128, 18464,
			74457, 90561, 72848, 11834, 79982, 68416, 39528, 72484, 82474, 25593, 48545, 35247, 18619,
			13674, 18611, 19241, 81616, 18711, 53342, 44276, 75122, 11724, 74627, 73707, 58319, 15997, 7586,
			16120, 82641, 22820, 92904, 13141, 32392, 19763, 61199, 67940, 90767, 4235, 13574, 17200, 69902,
			63742, 78464, 22501, 18627, 90872, 40188, 28193, 29593, 88627, 94972, 11598, 62095, 36787, 441,
			58997, 34414, 82157, 86887, 55087, 19152, 23, 12302, 80783, 32624, 68691, 63439, 75363, 44989,
			16822, 36024, 867, 76378, 41605, 65961, 73488, 67049, 9070, 93399, 45547, 94458, 74284, 5041,
			49807, 20288, 34060, 79495, 4146, 52162, 90286, 54158, 34243, 46978, 35482, 59362, 95938, 91704,
			30552, 4737, 21031, 75051, 93029, 47665, 64382, 99782, 93478, 94015, 46874, 32444, 48277, 59820,
			96163, 64654, 25843, 41145, 42820, 74108, 88222, 88570, 74015, 25704, 91035, 1755, 14750, 48968,
			38603, 62880, 87873, 95160, 59221, 22304, 90314, 72877, 17334, 39283, 4149, 11748, 12102, 80580,
			41867, 17710, 59621, 6554, 7850, 73950, 79552, 17944, 5600, 60478, 3343, 25852, 58905, 57216,
			39618, 49856, 99326, 66067, 42792, 95043, 52680, 46780, 56487, 9971, 59481, 37006, 22186, 54244,
			91030, 45547, 70818, 59849, 96169, 61459, 21647, 87417, 17198, 30945, 57589, 31732, 57260,
			47670, 7654, 46376, 25366, 94746, 49580, 69170, 37403, 86995, 90307, 94304, 71803, 26825, 5511,
			12459, 91314, 8345, 88975, 35841, 85771, 8105, 59987, 87112, 21476, 14713, 71181, 27767, 43584,
			85301, 88977, 29490, 69714, 73035, 41207, 74699, 9310, 13025, 14338, 54066, 15243, 47724, 66733,
			47431, 43905, 31048, 56699, 80217, 36292, 98525, 24335, 24432, 24896, 43277, 58874, 11466,
			16082, 10875, 62004, 90391, 61105, 57411, 6368, 53856, 30743, 8670, 84741, 54127, 57326, 26629,
			19087, 24472, 88779, 30540, 27886, 61732, 75454, 60311, 42824, 37301, 42678, 45990, 43242,
			17374, 52003, 70707, 70214, 49739, 71484, 92003, 98086, 76668, 73209, 59202, 11973, 2902, 33250,
			78626, 51594, 16453, 94614, 39014, 97066, 83012, 9832, 25571, 77628, 66692, 13986, 99837, 582,
			81232, 44987, 9504, 96412, 90193, 79568, 44071, 28091, 7362, 97703, 76447, 42537, 98524, 97831,
			65704, 9514, 41468, 85149, 49554, 17994, 14924, 39650, 95294, 556, 70481, 6905, 94559, 37559,
			49678, 53119, 70312, 5682, 66986, 34099, 74474, 20740, 41615, 70360, 64114, 58660, 90850, 64618,
			80620, 51790, 11436, 38072, 50273, 93113, 41794, 86861, 24781, 89683, 55411, 85667, 77535,
			99892, 41396, 80504, 90670, 8289, 40902, 5069, 95083, 6783, 28102, 57816, 25807, 24260, 71529,
			78920, 72682, 7385, 90726, 57166, 98884, 8583, 6170, 97965, 88302, 98041, 21443, 41808, 68984,
			83620, 89747, 98882, 60808, 54444, 74412, 81105, 1176, 28838, 36421, 16489, 18059, 51061, 80940,
			44893, 10408, 36222, 80582, 71944, 92638, 40333, 67054, 16067, 19516, 90120, 46759, 71643,
			13177, 55292, 21036, 82808, 77501, 97427, 49386, 54480, 23604, 23554, 21785, 41101, 91178,
			10174, 29420, 90438, 6312, 88940, 15995, 69321, 47458, 64809, 98189, 81851, 29651, 84215, 60942,
			307, 11897, 92674, 40405, 68032, 96717, 54244, 10701, 41393, 92329, 98932, 78284, 46347, 71209,
			92061, 39448, 93136, 25722, 8564, 77936, 63574, 31384, 51924, 85561, 29671, 58137, 17820, 22751,
			36518, 38101, 77756, 11657, 13897, 95889, 57067, 47648, 13885, 70669, 93406, 39641, 69457,
			91339, 22502, 92613, 89719, 11947, 56203, 19324, 20504, 84054, 40455, 99396, 63680, 67667,
			60631, 69181, 96845, 38525, 11600, 47468, 3577, 57649, 63266, 24700, 71594, 14004, 23153, 69249,
			5747, 43321, 31370, 28977, 23896, 76479, 68562, 62342, 7589, 8899, 5985, 64281, 61826, 18555,
			64937, 13173, 33365, 78851, 16499, 87064, 13075, 66847, 70495, 32350, 2985, 86716, 38746, 26313,
			77463, 55387, 72681, 72461, 33230, 21529, 53424, 92581, 2262, 78438, 66276, 18396, 73538, 21032,
			91050, 13058, 16218, 12470, 56500, 15292, 76139, 59526, 52113, 95362, 67011, 6651, 16136, 1016,
			857, 55018, 56374, 35824, 71708, 49712, 97380, 10404, 55452, 34030, 60726, 75211, 10271, 36633,
			68424, 58275, 61764, 97586, 54716, 50259, 46345, 87195, 46092, 26787, 60939, 89514, 11788,
			68224, 23417, 73959, 76145, 30342, 40277, 11049, 72049, 15472, 50669, 48139, 36732, 46874,
			37088, 73465, 9819, 58869, 35220, 12120, 86124, 51247, 44302, 60883, 52109, 21437, 36786, 49226,
			77837, 19612, 78430, 11661, 94770, 77603, 65669, 86868, 12665, 30012, 75989, 39141, 77400, 28e3,
			64238, 73258, 71794, 31340, 26256, 66453, 37016, 64756, 80457, 8747, 12836, 3469, 50678, 3274,
			43423, 66677, 82556, 92901, 51878, 56441, 22998, 29718, 38447, 6453, 25311, 7565, 53771, 3551,
			90070, 9483, 94050, 45938, 18135, 36908, 43321, 11073, 51803, 98884, 66209, 6830, 53656, 14663,
			56346, 71430, 4909, 19818, 5707, 27369, 86882, 53473, 7541, 53633, 70863, 3748, 12822, 19360,
			49088, 59066, 75974, 63335, 20483, 43514, 37481, 58278, 26967, 49325, 43951, 91647, 93783,
			64169, 49022, 98588, 9495, 49829, 59068, 38831, 4838, 83605, 92419, 39542, 7772, 71568, 75673,
			35185, 89759, 44901, 74291, 24895, 88530, 70774, 35439, 46758, 70472, 70207, 92675, 91623,
			61275, 35720, 26556, 95596, 20094, 73750, 85788, 34264, 1703, 46833, 65248, 14141, 53410, 38649,
			6343, 57256, 61342, 72709, 75318, 90379, 37562, 27416, 75670, 92176, 72535, 93119, 56077, 6886,
			18244, 92344, 31374, 82071, 7429, 81007, 47749, 40744, 56974, 23336, 88821, 53841, 10536, 21445,
			82793, 24831, 93241, 14199, 76268, 70883, 68002, 3829, 17443, 72513, 76400, 52225, 92348, 62308,
			98481, 29744, 33165, 33141, 61020, 71479, 45027, 76160, 57411, 13780, 13632, 52308, 77762,
			88874, 33697, 83210, 51466, 9088, 50395, 26743, 5306, 21706, 70001, 99439, 80767, 68749, 95148,
			94897, 78636, 96750, 9024, 94538, 91143, 96693, 61886, 5184, 75763, 47075, 88158, 5313, 53439,
			14908, 8830, 60096, 21551, 13651, 62546, 96892, 25240, 47511, 58483, 87342, 78818, 7855, 39269,
			566, 21220, 292, 24069, 25072, 29519, 52548, 54091, 21282, 21296, 50958, 17695, 58072, 68990,
			60329, 95955, 71586, 63417, 35947, 67807, 57621, 64547, 46850, 37981, 38527, 9037, 64756, 3324,
			4986, 83666, 9282, 25844, 79139, 78435, 35428, 43561, 69799, 63314, 12991, 93516, 23394, 94206,
			93432, 37836, 94919, 26846, 2555, 74410, 94915, 48199, 5280, 37470, 93622, 4345, 15092, 19510,
			18094, 16613, 78234, 50001, 95491, 97976, 38306, 32192, 82639, 54624, 72434, 92606, 23191,
			74693, 78521, 104, 18248, 75583, 90326, 50785, 54034, 66251, 35774, 14692, 96345, 44579, 85932,
			44053, 75704, 20840, 86583, 83944, 52456, 73766, 77963, 31151, 32364, 91691, 47357, 40338,
			23435, 24065, 8458, 95366, 7520, 11294, 23238, 1748, 41690, 67328, 54814, 37777, 10057, 42332,
			38423, 2309, 70703, 85736, 46148, 14258, 29236, 12152, 5088, 65825, 2463, 65533, 21199, 60555,
			33928, 1817, 7396, 89215, 30722, 22102, 15880, 92261, 17292, 88190, 61781, 48898, 92525, 21283,
			88581, 60098, 71926, 819, 59144, 224, 30570, 90194, 18329, 6999, 26857, 19238, 64425, 28108,
			16554, 16016, 42, 83229, 10333, 36168, 65617, 94834, 79782, 23924, 49440, 30432, 81077, 31543,
			95216, 64865, 13658, 51081, 35337, 74538, 44553, 64672, 90960, 41849, 93865, 44608, 93176,
			34851, 5249, 29329, 19715, 94082, 14738, 86667, 43708, 66354, 93692, 25527, 56463, 99380, 38793,
			85774, 19056, 13939, 46062, 27647, 66146, 63210, 96296, 33121, 54196, 34108, 75814, 85986,
			71171, 15102, 28992, 63165, 98380, 36269, 60014, 7201, 62448, 46385, 42175, 88350, 46182, 49126,
			52567, 64350, 16315, 53969, 80395, 81114, 54358, 64578, 47269, 15747, 78498, 90830, 25955,
			99236, 43286, 91064, 99969, 95144, 64424, 77377, 49553, 24241, 8150, 89535, 8703, 91041, 77323,
			81079, 45127, 93686, 32151, 7075, 83155, 10252, 73100, 88618, 23891, 87418, 45417, 20268, 11314,
			50363, 26860, 27799, 49416, 83534, 19187, 8059, 76677, 2110, 12364, 71210, 87052, 50241, 90785,
			97889, 81399, 58130, 64439, 5614, 59467, 58309, 87834, 57213, 37510, 33689, 1259, 62486, 56320,
			46265, 73452, 17619, 56421, 40725, 23439, 41701, 93223, 41682, 45026, 47505, 27635, 56293,
			91700, 4391, 67317, 89604, 73020, 69853, 61517, 51207, 86040, 2596, 1655, 9918, 45161, 222,
			54577, 74821, 47335, 8582, 52403, 94255, 26351, 46527, 68224, 90183, 85057, 72310, 34963, 83462,
			49465, 46581, 61499, 4844, 94626, 2963, 41482, 83879, 44942, 63915, 94365, 92560, 12363, 30246,
			2086, 75036, 88620, 91088, 67691, 67762, 34261, 8769, 91830, 23313, 18256, 28850, 37639, 92748,
			57791, 71328, 37110, 66538, 39318, 15626, 44324, 82827, 8782, 65960, 58167, 1305, 83950, 45424,
			72453, 19444, 68219, 64733, 94088, 62006, 89985, 36936, 61630, 97966, 76537, 46467, 30942, 7479,
			67971, 14558, 22458, 35148, 1929, 17165, 12037, 74558, 16250, 71750, 55546, 29693, 94984, 37782,
			41659, 39098, 23982, 29899, 71594, 77979, 54477, 13764, 17315, 72893, 32031, 39608, 75992,
			73445, 1317, 50525, 87313, 45191, 30214, 19769, 90043, 93478, 58044, 6949, 31176, 88370, 50274,
			83987, 45316, 38551, 79418, 14322, 91065, 7841, 36130, 86602, 10659, 40859, 964, 71577, 85447,
			61079, 96910, 72906, 7361, 84338, 34114, 52096, 66715, 51091, 86219, 81115, 49625, 48799, 89485,
			24855, 13684, 68433, 70595, 70102, 71712, 88559, 92476, 32903, 68009, 58417, 87962, 11787,
			16644, 72964, 29776, 63075, 13270, 84758, 49560, 10317, 28778, 23006, 31036, 84906, 81488,
			17340, 74154, 42801, 27917, 89792, 62604, 62234, 13124, 76471, 51667, 37589, 87147, 24743,
			48023, 6325, 79794, 35889, 13255, 4925, 99004, 70322, 60832, 76636, 56907, 56534, 72615, 46288,
			36788, 93196, 68656, 66492, 35933, 52293, 47953, 95495, 95304, 50009, 83464, 28608, 38074,
			74083, 9337, 7965, 65047, 36871, 59015, 21769, 30398, 44855, 1020, 80680, 59328, 8712, 48190,
			45332, 27284, 31287, 66011, 9376, 86379, 74508, 33579, 77114, 92955, 23085, 92824, 3054, 25242,
			16322, 48498, 9938, 44420, 13484, 52319, 58875, 2012, 88591, 52500, 95795, 41800, 95363, 54142,
			17482, 32705, 60564, 12505, 40954, 46174, 64130, 63026, 96712, 79883, 39225, 52653, 69549,
			36693, 59822, 22684, 31661, 88298, 15489, 16030, 42480, 15372, 38781, 71995, 77438, 91161,
			10192, 7839, 62735, 99218, 25624, 2547, 27445, 69187, 55749, 32322, 15504, 73298, 51108, 48717,
			92926, 75705, 89787, 96114, 99902, 37749, 96305, 12829, 70474, 838, 50385, 91711, 80370, 56504,
			56857, 80906, 9018, 76569, 61072, 48568, 36491, 22587, 44363, 39592, 61546, 90181, 37348, 41665,
			41339, 62106, 44203, 6732, 76111, 79840, 67999, 32231, 76869, 58652, 49983, 1669, 27464, 79553,
			52855, 25988, 18087, 38052, 17529, 13607, 657, 76173, 43357, 77334, 24140, 53860, 2906, 89863,
			44651, 55715, 26203, 65933, 51087, 98234, 40625, 45545, 63563, 89148, 82581, 4110, 66683, 99001,
			9796, 47349, 65003, 66524, 81970, 71262, 14479, 31300, 8681, 58068, 44115, 40064, 77879, 23965,
			69019, 73985, 19453, 26225, 97543, 37044, 7494, 85778, 35345, 61115, 92498, 49737, 64599, 7158,
			82763, 25072, 38478, 57782, 75291, 62155, 52056, 4786, 11585, 71251, 25572, 79771, 93328, 66927,
			54069, 58752, 26624, 50463, 77361, 29991, 96526, 2820, 91659, 12818, 96356, 49499, 1507, 40223,
			9171, 83642, 21057, 2677, 9367, 38097, 16100, 19355, 6120, 15378, 56559, 69167, 30235, 6767,
			66323, 78294, 14916, 19124, 88044, 16673, 66102, 86018, 29406, 75415, 22038, 27056, 26906,
			25867, 14751, 92380, 30434, 44114, 6026, 79553, 55091, 95385, 41212, 37882, 46864, 54717, 97038,
			53805, 64150, 70915, 63127, 63695, 41288, 38192, 72437, 75075, 18570, 52065, 8853, 30104, 79937,
			66913, 53200, 84570, 78079, 28970, 53859, 37632, 80274, 35240, 32960, 74859, 7359, 55176, 3930,
			38984, 35151, 82576, 82805, 94031, 12779, 90879, 24109, 25367, 77861, 9541, 85739, 69023, 64971,
			99321, 7521, 95909, 43897, 71724, 92581, 5471, 64337, 98949, 3606, 78236, 78985, 29212, 57369,
			34857, 67757, 58019, 58872, 96526, 28749, 56592, 37871, 72905, 70198, 57319, 54116, 47014,
			18285, 33692, 72111, 60958, 96848, 17893, 40993, 50445, 14186, 76877, 87867, 50335, 9513, 44346,
			26439, 55293, 6449, 44301, 63740, 40158, 72703, 88321, 85062, 57345, 66231, 15409, 3451, 95261,
			43561, 15673, 28956, 90303, 62469, 82517, 43035, 36850, 15592, 64098, 59022, 31752, 4370, 50486,
			11885, 23085, 41712, 80692, 48492, 16495, 99721, 36912, 28267, 27882, 16269, 64483, 11273, 2680,
			1616, 46138, 54606, 14761, 5134, 45144, 63213, 49666, 27441, 86989, 29884, 54334, 6740, 8368,
			80051, 81020, 17882, 74973, 74531, 94994, 24927, 64894, 22667, 20466, 82948, 66831, 47427,
			76033, 31197, 59817, 20064, 61135, 28556, 29695, 80179, 74058, 18293, 9963, 35278, 13062, 83094,
			23373, 90287, 33477, 48865, 30348, 70174, 11468, 25994, 25343, 22317, 1587, 30682, 1, 67814,
			59557, 23362, 13746, 82244, 42093, 24671, 79458, 93730, 45488, 60234, 67098, 9899, 25775, 332,
			36636, 57594, 19958, 85564, 58977, 12247, 60774, 66371, 69442, 20385, 14486, 91330, 50332,
			46023, 75768, 59877, 60081, 92936, 72302, 75064, 85727, 52987, 5750, 19384, 33684, 78859, 80458,
			69902, 34870, 88684, 49762, 40801, 86291, 18194, 90366, 82639, 53844, 96326, 65728, 48563,
			26027, 52692, 62406, 76294, 41848, 63010, 69841, 29451, 36170, 21529, 16525, 64326, 22086,
			24469, 57407, 96033, 37771, 31002, 18311, 93285, 31948, 14331, 58335, 15977, 80336, 81667,
			27286, 24361, 61638, 57580, 95270, 46180, 76990, 53031, 94366, 2727, 49944, 19278, 5756, 51875,
			53445, 33342, 1965, 7937, 10054, 97712, 87693, 58124, 46064, 39133, 77385, 9605, 65359, 70113,
			90563, 86637, 94282, 12025, 31926, 24541, 23854, 58407, 32131, 92845, 20714, 27898, 26917,
			50326, 35145, 50859, 72119, 95094, 29441, 42301, 62460, 75252, 94267, 38422, 73047, 24200,
			85349, 72049, 91723, 97802, 98496, 12734, 73432, 10371, 57213, 53300, 80847, 46229, 7099, 72961,
			13767, 65654, 31102, 82119, 96946, 65919, 81083, 3819, 57888, 57908, 16849, 77111, 41429, 92261,
			45263, 1172, 55926, 78835, 27697, 48420, 58865, 41207, 21406, 8582, 10785, 36233, 12237, 7866,
			13706, 92551, 11021, 63813, 71512, 65206, 37768, 94325, 14721, 20990, 54235, 71986, 5345, 56239,
			52028, 1419, 7215, 55067, 11669, 21738, 66605, 69621, 69827, 8537, 18638, 60982, 28151, 98885,
			76431, 25566, 3085, 23639, 30849, 63986, 73287, 26201, 36174, 14106, 54102, 57041, 16141, 64174,
			3591, 90024, 73332, 31254, 17288, 59809, 25061, 51612, 47951, 16570, 43330, 79213, 11354, 55585,
			19646, 99246, 37564, 32660, 20632, 21124, 60597, 69315, 31312, 57741, 85108, 21615, 24365,
			27684, 16124, 33888, 14966, 35303, 69921, 15795, 4020, 67672, 86816, 63027, 84470, 45605, 44887,
			26222, 79888, 58982, 22466, 98844, 48353, 60666, 58256, 31140, 93507, 69561, 6256, 88526, 18655,
			865, 75247, 264, 65957, 98261, 72706, 36396, 46065, 85700, 32121, 99975, 73627, 78812, 89638,
			86602, 96758, 65099, 52777, 46792, 13790, 55240, 52002, 10313, 91933, 71231, 10053, 78416,
			54563, 96004, 42215, 30094, 45958, 48437, 49591, 50483, 13422, 69108, 59952, 27896, 40450,
			79327, 31962, 46456, 39260, 51479, 61882, 48181, 50691, 64709, 32902, 10676, 12083, 35771,
			79656, 56667, 76783, 3937, 99859, 10362, 57411, 40986, 35045, 2838, 29255, 64230, 84418, 34988,
			77644, 39892, 77327, 74129, 53444, 35487, 95803, 38640, 20383, 55402, 25793, 14213, 87082,
			42837, 95030, 97198, 61608, 97723, 79390, 35290, 34683, 81419, 87133, 70447, 53127, 97146,
			28299, 56763, 12868, 1145, 12147, 58158, 92124, 60934, 18414, 97510, 7056, 54488, 20719, 53743,
			91037, 44797, 52110, 8512, 18991, 20129, 31441, 51449, 14661, 71126, 23180, 68124, 18807, 70997,
			21913, 19594, 70355, 73637, 68266, 60775, 43164, 52643, 96363, 77989, 79332, 39890, 65379,
			20405, 52935, 43816, 92740, 95319, 4538, 60660, 28982, 15328, 80475, 34690, 2293, 19646, 46524,
			96627, 33159, 42081, 8816, 74931, 20674, 8697, 66169, 46460, 46326, 39923, 60625, 28386, 22919,
			19415, 75766, 43668, 31626, 70301, 67053, 3949, 70082, 2303, 48642, 38429, 94053, 38770, 68137,
			68441, 52928, 70244, 91954, 17401, 92693, 98342, 21451, 84988, 80487, 33807, 73797, 49494,
			41878, 76635, 83227, 76618, 11946, 13451, 87591, 78381, 21407, 90038, 72638, 69692, 51599,
			86413, 32019, 64856, 74730, 41531, 11064, 1790, 58817, 86400, 66213, 92599, 70905, 78324, 54326,
			43659, 34206, 63132, 38837, 40210, 96346, 16967, 81619, 96503, 14881, 89405, 32205, 49508,
			98425, 2451, 35423, 56072, 36810, 30332, 85998, 49358, 92748, 84147, 79835, 94867, 41224, 61794,
			35066, 82220, 66684, 20096, 2754, 41731, 37068, 32753, 91059, 13407, 5607, 69384, 53329, 95909,
			44968, 11397, 92973, 50014, 92997, 80968, 93761, 57598, 74703, 7768, 37978, 73873, 33475, 9720,
			97852, 98449, 48722, 84977, 11271, 11728, 68318, 22312, 78792, 87508, 88466, 72976, 47099,
			84126, 38595, 85124, 64405, 90020, 7492, 52413, 95111, 34455, 86311, 68892, 1074, 60274, 28136,
			19328, 38161, 57475, 13771, 63562, 84207, 94121, 18901, 52768, 33801, 82087, 86091, 59969,
			90398, 56870, 55756, 78841, 98450, 54165, 55106, 50343, 70519, 14567, 36780, 55450, 19606,
			83749, 67562, 64765, 38543, 16585, 86841, 73742, 8766, 39252, 75678, 75379, 78760, 37279, 15280,
			13558, 95916, 89759, 76686, 76467, 67147, 63110, 94008, 8037, 35263, 53710, 16667, 79008, 11231,
			29397, 67136, 18601, 64502, 90228, 89109, 72849, 22711, 65547, 34542, 26686, 81678, 87765,
			77654, 23664, 96352, 14106, 32938, 28083, 18633, 80286, 65507, 46197, 52722, 75476, 77816,
			47204, 34876, 45963, 79262, 90181, 84041, 3745, 90041, 30780, 27226, 92847, 85572, 15308, 80688,
			5761, 82638, 13464, 23683, 81015, 54214, 64175, 43701, 86845, 15569, 50687, 52679, 87696, 8285,
			97444, 47599, 94472, 64150, 87753, 68652, 60726, 26213, 17320, 64553, 81285, 98126, 12158,
			52095, 64833, 492, 35817, 55571, 91300, 97812, 37507, 4209, 53515, 64342, 21223, 16662, 43265,
			68219, 3529, 43636, 68417, 53640, 95326, 93381, 37113, 80751, 76469, 96677, 43054, 22937, 31954,
			13266, 34140, 27253, 2734, 99070, 60077, 57988, 93211, 92795, 83795, 57477, 3941, 39007, 14619,
			38320, 93449, 31336, 25279, 97030, 26245, 47394, 39475, 90621, 23820, 29344, 94859, 91604,
			14033, 41868, 14816, 4075, 66644, 87803, 97815, 99552, 78666, 3942, 8175, 22345, 19983, 76783,
			99044, 20851, 84981, 59052, 77178, 72109, 76475, 21619, 73017, 6812, 56633, 50612, 55289, 4671,
			84419, 94072, 94446, 80603, 32188, 93415, 23464, 43947, 43728, 74284, 67177, 57105, 31059,
			10642, 13803, 69602, 46961, 66567, 19359, 84676, 63918, 40650, 12923, 15974, 79732, 20225,
			92525, 71179, 4859, 91208, 60430, 5239, 61458, 24089, 68852, 60171, 29603, 42535, 86365, 93905,
			28237, 45317, 60718, 82001, 41679, 20679, 56304, 70043, 87568, 21386, 59049, 78353, 48696,
			77379, 55309, 23780, 28391, 5940, 55583, 81256, 59418, 97521, 32846, 70761, 90115, 45325, 5490,
			65974, 11186, 15357, 3568, 450, 96644, 58976, 36211, 88240, 92457, 89200, 94696, 11370, 91157,
			48487, 59501, 56983, 89795, 42789, 69758, 79701, 29511, 55968, 41472, 89474, 84344, 80517, 7485,
			97523, 17264, 82840, 59556, 37119, 30985, 48866, 60605, 95719, 70417, 59083, 95137, 76538,
			44155, 67286, 57897, 28262, 4052, 919, 86207, 79932, 44236, 10089, 44373, 65670, 44285, 6903,
			20834, 49701, 95735, 21149, 3425, 17594, 31427, 14262, 32252, 68540, 39427, 44026, 47257, 45055,
			95091, 8367, 28381, 57375, 41562, 83883, 27715, 10122, 67745, 46497, 28626, 87297, 36568, 39483,
			11385, 63292, 92305, 78683, 6146, 81905, 15038, 38338, 51206, 65749, 34119, 71516, 74068, 51094,
			6665, 91884, 66762, 11428, 70908, 21506, 480, 94183, 78484, 66507, 75901, 25728, 52539, 86806,
			69944, 65036, 27882, 2530, 4918, 74351, 65737, 89178, 8791, 39342, 94963, 22581, 56917, 17541,
			83578, 75376, 65202, 30935, 79270, 91986, 99286, 45236, 44720, 81915, 70881, 45886, 43213,
			49789, 97081, 16075, 20517, 69980, 25310, 91953, 1759, 67635, 88933, 54558, 18395, 73375, 62251,
			58871, 9870, 70538, 48936, 7757, 90374, 56631, 88862, 30487, 38794, 36079, 32712, 11130, 55451,
			25137, 38785, 83558, 31960, 69473, 45950, 18225, 9871, 88502, 75179, 11551, 75664, 74321, 67351,
			27703, 83717, 18913, 42470, 8816, 37627, 14288, 62831, 44047, 67612, 72738, 26995, 50933, 63758,
			50003, 43693, 52661, 55852, 52372, 59042, 37595, 4931, 73622, 68387, 86478, 40997, 5245, 75300,
			24902, 59609, 35653, 15970, 37681, 69365, 22236, 86374, 65550, 343, 98377, 35354, 65770, 15365,
			41422, 71356, 16630, 40044, 19290, 66449, 53629, 79452, 71674, 30260, 97303, 6487, 62789, 13005,
			70152, 22501, 49867, 89294, 59232, 31776, 54919, 99851, 5438, 1096, 72269, 50486, 16719, 6144,
			82041, 38332, 64452, 31840, 99287, 59928, 25503, 8407, 46970, 45907, 99238, 74547, 19704, 72035,
			26542, 54600, 79172, 58779, 35747, 78956, 11478, 41195, 58135, 63856, 33037, 45753, 60159,
			25193, 71838, 7526, 7985, 60714, 88627, 75790, 38454, 96110, 39237, 19792, 34534, 70169, 24805,
			63215, 38175, 38784, 38855, 24826, 50917, 25147, 17082, 26997, 32295, 10894, 21805, 65245,
			85407, 37926, 69214, 38579, 84721, 23544, 88548, 65626, 75517, 69737, 55626, 52175, 21697,
			19453, 16908, 82841, 24060, 40285, 19195, 80281, 89322, 15232, 70043, 60691, 86370, 91949,
			19017, 83846, 77869, 14321, 95102, 87073, 71467, 31305, 64677, 80358, 52629, 79419, 22359,
			87867, 48296, 50141, 46807, 82184, 95812, 84665, 74511, 59914, 4146, 90417, 58508, 62875, 17630,
			21868, 9199, 30322, 33352, 43374, 25473, 4119, 63086, 14147, 14863, 38020, 44757, 98628, 57916,
			22199, 11865, 42911, 62651, 78290, 9392, 77294, 63168, 21043, 17409, 13786, 27475, 75979, 89668,
			43596, 74316, 84489, 54941, 95992, 45445, 41059, 55142, 15214, 42903, 16799, 88254, 95984,
			48575, 77822, 21067, 57238, 35352, 96779, 89564, 23797, 99937, 46379, 27119, 16060, 30302,
			95327, 12849, 38111, 97090, 7598, 78473, 63079, 18570, 72803, 70040, 91385, 96436, 96263, 17368,
			56188, 85999, 50026, 36050, 73736, 13351, 48321, 28357, 51718, 65636, 72903, 21584, 21060,
			39829, 15564, 4716, 14594, 22363, 97639, 65937, 17802, 31535, 42767, 98761, 30987, 57657, 33398,
			63053, 25926, 20944, 19306, 81727, 2695, 97479, 79172, 72764, 66446, 78864, 12698, 15812, 97209,
			38827, 91016, 91281, 57875, 45228, 49211, 69755, 99224, 43999, 62879, 8879, 80015, 74396, 57146,
			64665, 31159, 6980, 79069, 37409, 75037, 69977, 85919, 42826, 6974, 61063, 97640, 13433, 92528,
			91311, 8440, 38840, 22362, 93929, 1836, 36590, 75052, 89475, 15437, 65648, 99012, 70236, 12307,
			83585, 414, 62851, 48787, 28447, 21702, 57033, 29633, 44760, 34165, 27548, 37516, 24343, 63046,
			2081, 20378, 19510, 42226, 97134, 68739, 32982, 56455, 53129, 77693, 25022, 55534, 99375, 30086,
			98001, 7432, 67126, 76656, 29347, 28492, 43108, 64736, 32278, 84816, 80440, 30461, 818, 9136,
			1952, 48442, 91058, 92590, 10443, 5195, 34009, 32141, 62209, 43740, 54102, 76895, 98172, 31583,
			4155, 66492, 58981, 16591, 11331, 6838, 3818, 77063, 12523, 45570, 68970, 70055, 77751, 73743,
			71732, 4704, 61384, 57343, 66682, 44500, 89745, 10436, 67202, 36455, 42467, 88801, 91280, 1056,
			27534, 81619, 79004, 25824, 66362, 33280, 20706, 31929, 57422, 18730, 96197, 22101, 47592, 2180,
			18287, 82310, 60430, 59627, 26471, 7794, 60475, 76713, 45427, 89654, 14370, 81674, 41246, 98416,
			8669, 48883, 77154, 9806, 94015, 60347, 20027, 8405, 33150, 27368, 53375, 70171, 59431, 14534,
			34018, 85665, 77797, 17944, 49602, 74391, 48830, 55029, 10371, 94261, 16658, 68400, 44148,
			28150, 40364, 90913, 73151, 64463, 50058, 78191, 84439, 82478, 62398, 3113, 17578, 12830, 6571,
			95934, 9132, 25287, 78731, 80683, 67207, 76597, 42096, 34934, 76609, 52553, 47508, 71561, 8038,
			83011, 72577, 95790, 40076, 20292, 32138, 61197, 95476, 23123, 26648, 13611, 48452, 39963,
			85857, 4855, 27029, 1542, 72443, 53688, 82635, 56264, 7977, 23090, 93553, 65434, 12124, 91087,
			87800, 95675, 99419, 44659, 30382, 55263, 82514, 86800, 16781, 65977, 65946, 13033, 93895, 4056,
			75895, 47878, 91309, 51233, 81409, 46773, 69135, 56906, 84493, 34530, 84534, 38312, 54574,
			92933, 77341, 20839, 36126, 1143, 35356, 35459, 7959, 98335, 53266, 36146, 78047, 50607, 22486,
			63308, 8996, 96056, 39085, 26567, 6779, 62663, 30523, 47881, 41279, 49864, 82248, 78333, 29466,
			48151, 41957, 93235, 53308, 22682, 90722, 54478, 7235, 34306, 15827, 20121, 96837, 6283, 80172,
			66109, 92592, 48238, 76428, 94546, 45430, 16288, 74839, 740, 25553, 83767, 35900, 5998, 7493,
			46755, 11449, 88824, 44906, 33143, 7454, 56652, 34755, 63992, 59674, 65131, 46358, 12799, 96988,
			51158, 73176, 1184, 49925, 63519, 11785, 29073, 72850, 47997, 75172, 55187, 15313, 40725, 33225,
			56643, 10465, 38583, 86440, 97967, 26401, 17078, 38765, 33454, 19136, 57712, 48446, 98790,
			27315, 71074, 10157, 57946, 35582, 49383, 61324, 26572, 84503, 3496, 60449, 17962, 26017, 65651,
			40400, 83246, 80056, 75306, 75147, 41863, 25581, 87530, 33193, 43294, 5065, 99644, 62771, 75986,
			79005, 44924, 18703, 40889, 4403, 5862, 2571, 82500, 74200, 36170, 46836, 74642, 65471, 26815,
			30937, 64946, 10160, 15544, 31962, 54015, 28853, 66533, 14573, 79398, 47391, 73165, 47805,
			77589, 16881, 13423, 89452, 76992, 62509, 9796, 57540, 13486, 48855, 25546, 47589, 21012, 47388,
			78428, 70196, 84413, 81026, 87597, 22445, 83769, 85937, 38321, 85485, 87359, 9839, 67228, 71179,
			94372, 4446, 62801, 50775, 96179, 40646, 44272, 12417, 47199, 39701, 30665, 32775, 66525, 53558,
			78882, 31939, 67209, 38906, 34533, 99914, 27719, 216, 99225, 96537, 3843, 90564, 91110, 51838,
			30300, 9559, 37795, 94880, 11325, 44979, 89696, 28129, 29931, 89971, 46292, 92710, 11036, 74760,
			75307, 12291, 49618, 16293, 92408, 67928, 80823, 32872, 25460, 66819, 35374, 4035, 99087, 61129,
			11341, 39118, 10891, 37217, 63638, 75477, 30068, 42334, 57570, 6890, 59353, 89939, 37692, 15232,
			20033, 32202, 22348, 2766, 96791, 58448, 92248, 5769, 96684, 67885, 99295, 47271, 38655, 59513,
			96960, 31718, 8974, 16122, 20535, 52380, 29769, 70660, 57425, 50891, 75044, 84257, 73315, 38181,
			28673, 93140, 26307, 82265, 78382, 19681, 56585, 8975, 76764, 39956, 83450, 84663, 89963, 71584,
			57696, 30829, 60527, 64947, 34899, 28805, 28397, 91830, 51842, 99838, 39839, 66971, 67177,
			74219, 35637, 35634, 93581, 81746, 29991, 81096, 94279, 2968, 62561, 2479, 82126, 25702, 67953,
			88088, 50293, 83423, 86206, 39935, 23253, 43041, 48941, 85787, 8388, 6671, 43574, 84908, 67295,
			33623, 55060, 28174, 48415, 2529, 22009, 24524, 5283, 30460, 32399, 80423, 56929, 40852, 69969,
			88541, 5979, 91496, 64730, 57198, 83145, 39750, 3568, 54669, 98679, 4297, 51047, 31492, 47734,
			31343, 31180, 232, 19707, 24823, 75079, 73943, 17997, 8446, 91252, 39879, 58682, 82972, 18417,
			39203, 36681, 42895, 8459, 15618, 17941, 52594, 43277, 16530, 40052, 91100, 87422, 47230, 95699,
			49794, 50492, 87439, 86354, 4546, 65333, 11057, 77727, 19748, 38722, 91821, 18107, 42125, 89239,
			28847, 54623, 38783, 47803, 31414, 38450, 3697, 89186, 30579, 44188, 26532, 8420, 80723, 48100,
			60748, 76330, 45832, 8311, 16051, 4475, 13400, 48527, 46073, 17439, 56498, 94632, 9021, 16871,
			83366, 14896, 4219, 38375, 87890, 90217, 42370, 61028, 85101, 76771, 83715, 94737, 69973, 74187,
			1958, 59691, 86712, 86570, 60984, 76342, 13648, 85250, 28323, 48379, 45141, 36277, 51845, 29039,
			3553, 5128, 59866, 51281, 68124, 17007, 24729, 29710, 41439, 40574, 11774, 86746, 89698, 56020,
			37810, 88972, 11361, 95583, 70786, 589, 74473, 87513, 17690, 61427, 72914, 32517, 1804, 97910,
			6327, 30246, 33049, 2622, 41026, 80875, 41293, 16752, 84225, 84414, 37137, 68956, 8095, 64981,
			28180, 38629, 76962, 23840, 17477, 75268, 48297, 70340, 57888, 13938, 38554, 86836, 2195, 30270,
			55484, 53364, 54705, 41380, 56316, 37723, 234, 21424, 26664, 63804, 75139, 36534, 18579, 9833,
			98849, 72762, 59767, 52497, 24227, 83152, 71794, 21398, 99456, 89215, 51632, 54799, 27973,
			68568, 68465, 98500, 28681, 18369, 24279, 96335, 12874, 82160, 67202, 85199, 27908, 67022,
			49810, 77929, 96212, 81153, 77884, 7032, 1671, 53362, 28119, 56786, 30883, 28540, 76029, 3774,
			64611, 19736, 25589, 46569, 45206, 48215, 69523, 17423, 91807, 90039, 30393, 58319, 85098,
			66519, 57571, 24541, 3562, 14400, 62731, 82534, 61477, 89731, 18421, 29861, 52829, 838, 78040,
			43350, 74323, 82892, 84746, 28302, 13264, 7595, 134, 12933, 46831, 24864, 47275, 20527, 9110,
			28485, 30326, 99826, 64005, 99308, 65779, 42760, 90066, 3974, 38688, 39968, 32604, 11694, 46262,
			73262, 45405, 43923, 67397, 88228, 56405, 17839, 92073, 57622, 93328, 15442, 50186, 7570, 58001,
			31e3, 8915, 11467, 14793, 82691, 51238, 12485, 51745, 18192, 5985, 36826, 89434, 38669, 91592,
			88799, 65621, 67237, 59541, 19657, 93402, 58705, 73553, 78280, 69125, 95591, 81168, 91927,
			25976, 89077, 71690, 19404, 64603, 59752, 74698, 44233, 67602, 38615, 31303, 28650, 53700,
			89819, 7783, 4351, 77451, 47350, 21234, 16016, 41532, 76508, 23063, 44993, 43983, 33356, 61715,
			96485, 22121, 78004, 6316, 87896, 99289, 93981, 37850, 66128, 92735, 45064, 50924, 24204, 58816,
			65290, 34392, 55567, 66416, 72353, 45775, 68590, 85685, 72683, 60090, 37149, 85347, 57414,
			72336, 12979, 5720, 92754, 76911, 96883, 74420, 5220, 85815, 23557, 80567, 44365, 70254, 50864,
			36619, 51479, 23281, 76428, 18580, 34240, 59289, 49076, 18439, 29522, 42541, 4024, 84446, 92434,
			90407, 77241, 19690, 78143, 65919, 13699, 91844, 91241, 38361, 67171, 90551, 5709, 3474, 76025,
			97043, 33834, 44638, 54040, 82797, 545, 38159, 16089, 35870, 89158, 55864, 98078, 50563, 36492,
			10994, 85909, 9018, 19252, 73887, 67928, 60045, 70782, 11937, 4074, 53814, 46621, 52577, 94853,
			45968, 73667, 65062, 73306, 76045, 78649, 91654, 53958, 96537, 95542, 67622, 54579, 17279,
			67440, 56441, 20681, 64011, 52226, 96618, 32831, 60664, 67547, 39523, 2043, 59748, 1887, 69229,
			94653, 99271, 98164, 62155, 9234, 47367, 13047, 6364, 35064, 10073, 6793, 80248, 29009, 44969,
			11129, 17139, 79630, 89772, 26921, 56949, 23465, 30036, 17173, 82459, 96218, 60768, 76417,
			24405, 18710, 68887, 82394, 69729, 82503, 40873, 41590, 67255, 30757, 9657, 91881, 34578, 9511,
			5417, 58953, 18532, 10721, 22029, 48524, 47778, 881, 83489, 3464, 57462, 97459, 86689, 39755,
			39547, 740, 36666, 7993, 31671, 86304, 12970, 73402, 52849, 31652, 79655, 11250, 18463, 57518,
			20306, 25301, 1374, 51208, 33298, 87662, 61849, 60923, 68685, 69411, 39266, 80320, 34844, 89416,
			81569, 83651, 35795, 40168, 33501, 1042, 58931, 3892, 85188, 74740, 85476, 23790, 33842, 89565,
			53359, 25579, 59049, 62394, 72435, 12457, 21904, 18370, 97035, 57905, 9581, 91227, 92754, 37760,
			1411, 7440, 87175, 88318, 63242, 85960, 56690, 12618, 30493, 11569, 73723, 7448, 58830, 157,
			65814, 21118, 22140, 73793, 57855, 81830, 6795, 13183, 12625, 30635, 56429, 73216, 12342, 36722,
			83886, 96828, 82870, 90954, 97614, 2370, 42160, 73370, 11944, 49067, 59452, 80495, 43911, 46712,
			17033, 68037, 41963, 3874, 44856, 82985, 57453, 84358, 16120, 4454, 76624, 405, 62369, 55080,
			61880, 51270, 87807, 10653, 36894, 70850, 35660, 234, 14705, 93418, 94084, 82856, 25384, 71555,
			56754, 78315, 18291, 91656, 98079, 52384, 43306, 65205, 75903, 58701, 99496, 50048, 33557,
			87793, 90857, 10143, 46726, 84284, 43635, 41213, 83845, 70986, 91408, 80220, 5728, 68890, 46577,
			21152, 43759, 43301, 93661, 97252, 50106, 10099, 13722, 18572, 44024, 351, 18173, 23717, 85114,
			85998, 57782, 63951, 53723, 86853, 63851, 79430, 49181, 46386, 69666, 55743, 76162, 71724,
			40028, 94786, 34457, 16906, 90040, 30789, 40281, 94697, 96584, 81907, 4055, 53990, 66397, 80579,
			42517, 78181, 39251, 9467, 67097, 95523, 66568, 63632, 71048, 15581, 39904, 75774, 77495, 75994,
			29911, 65690, 41178, 47712, 70355, 16998, 56025, 5230, 10093, 71495, 34784, 70950, 54680, 57811,
			53782, 39145, 36829, 85342, 40406, 35883, 45668, 3459, 29870, 78252, 70088, 70621, 67153, 5737,
			40933, 91075, 93335, 86853, 15860, 81167, 91259, 16118, 52401, 83593, 84474, 2423, 75608, 39646,
			90871, 70284, 82100, 96032, 5115, 63678, 2225, 88087, 58581, 44364, 57468, 21539, 13042, 64150,
			63754, 5210, 87644, 54114, 64013, 63562, 41388, 32397, 74152, 23982, 71982, 71700, 33026, 66477,
			47838, 46712, 39848, 35083, 65927, 97868, 11067, 76771, 71799, 43836, 41014, 97025, 93225, 8511,
			63096, 26628, 73012, 12543, 76269, 99708, 2629, 49845, 73677, 19193, 14924, 57236, 95564, 15010,
			59667, 73773, 78515, 2624, 99744, 13585, 33746, 58771, 94785, 62628, 99585, 11363, 80832, 59979,
			9444, 78700, 2596, 85984, 69438, 16913, 96475, 93283, 18625, 77086, 45911, 39746, 64722, 39938,
			43930, 54619, 302, 50384, 2738, 75714, 75249, 95439, 80714, 52555, 47266, 96190, 78750, 94973,
			83669, 16479, 53163, 48071, 28e3, 45011, 26733, 67132, 83362, 84162, 43028, 8415, 27236, 52651,
			89059, 64844, 80910, 1676, 91752, 57815, 26264, 3415, 57532, 29981, 61200, 96036, 62600, 20068,
			56530, 38487, 8432, 89514, 26883, 69165, 97237, 22361, 55276, 39902, 95927, 82190, 49269, 27212,
			46095, 37106, 64254, 27460, 49572, 51700, 27679, 12574, 33891, 3867, 9925, 6476, 82018, 45094,
			59014, 67113, 44192, 75, 23318, 79895, 70550, 81717, 28833, 30271, 15821, 14999, 88174, 62617,
			57517, 55256, 50281, 51583, 96879, 5225, 42272, 5339, 20483, 57596, 41011, 75937, 22767, 50120,
			95938, 49753, 63882, 99616, 69083, 38721, 73889, 80236, 99531, 23053, 71237, 48861, 59046,
			76283, 60538, 19732, 93877, 30345, 64882, 66660, 17026, 70364, 45676, 8039, 96228, 89936, 59141,
			95585, 89552, 97247, 59325, 27848, 80058, 15950, 61481, 90906, 40998, 44137, 16144, 66300,
			44091, 50018, 81364, 18211, 60294, 76559, 20279, 27414, 10589, 39860, 23e3, 31767, 95618, 56738,
			50332, 16936, 70342, 92481, 30702, 76264, 62619, 68678, 62284, 83112, 93032, 55203, 52614,
			36950, 41796, 45403, 79262, 2887, 53596, 61308, 20738, 34811, 27099, 90956, 65448, 3080, 75795,
			29753, 97699, 80872, 23830, 85882, 74427, 99523, 74904, 28017, 45898, 57232, 48525, 7086, 26805,
			74533, 92470, 18840, 76011, 93109, 14344, 55614, 50284, 15865, 19458, 35856, 13464, 53679,
			64603, 51571, 56124, 79107, 29596, 89572, 78198, 57121, 73649, 8804, 87977, 87959, 70859, 40909,
			77295, 87877, 75158, 62810, 92074, 23244, 59516, 50552, 31602, 41899, 6347, 27821, 68370, 48596,
			88577, 30231, 25267, 84622, 31449, 12086, 56461, 22962, 78213, 62483, 93966, 60437, 52239,
			58113, 32526, 38708, 81607, 57016, 1695, 90110, 4649, 59990, 23979, 3855, 10297, 46516, 96092,
			82305, 30760, 78756, 4967, 82876, 4773, 86651, 16648, 53133, 82439, 78851, 49766, 24553, 15273,
			36417, 1901, 33386, 76979, 25920, 33372, 2695, 11982, 40911, 6230, 91696, 43907, 17827, 30332,
			89203, 32215, 91806, 23080, 49102, 9174, 11548, 54590, 75803, 66108, 73882, 62324, 26017, 72716,
			33887, 1285, 31604, 71039, 24337, 53514, 58964, 89901, 22040, 92751, 12617, 37007, 5523, 61672,
			62557, 98540, 26094, 60284, 19621, 96230, 38044, 6545, 9458, 42988, 2913, 86345, 67936, 90174,
			40840, 44991, 24256, 34989, 74086, 13652, 68706, 1363, 4294, 88008, 78693, 83068, 94746, 221,
			89299, 53186, 5930, 61889, 51341, 45412, 58860, 72568, 11381, 59785, 36887, 10690, 31347, 93326,
			96267, 86987, 57565, 86836, 49071, 90331, 41248, 34629, 30240, 27270, 3864, 84308, 3035, 61369,
			36902, 51017, 44409, 17120, 23823, 36460, 63359, 8333, 63173, 19134, 6493, 303, 18550, 26191,
			19051, 81502, 66343, 6737, 90430, 65478, 58982, 82484, 16483, 47704, 44640, 68322, 44548, 72787,
			2335, 28749, 39320, 5436, 98146, 56596, 812, 51445, 35533, 35478, 47573, 38414, 25542, 38032,
			13442, 42983, 97207, 77854, 57806, 81616, 52828, 79429, 47389, 96795, 57764, 19605, 24767,
			63253, 18809, 65093, 44449, 22952, 76872, 30983, 38948, 9310, 48336, 87651, 27110, 84427, 76209,
			56412, 12760, 16747, 14551, 82626, 31224, 98636, 75100, 84882, 79479, 83420, 5347, 6803, 90063,
			4617, 40257, 79183, 41766, 71873, 25242, 12275, 336, 40798, 42055, 74066, 69128, 32547, 76508,
			32530, 42359, 89207, 49758, 58984, 92732, 15779, 7234, 28884, 28226, 50011, 35883, 99606, 45423,
			76224, 75427, 85747, 33879, 97978, 57441, 927, 19164, 74716, 40702, 19715, 70917, 60344, 40236,
			9019, 50577, 15598, 53136, 57285, 20536, 7539, 74832, 89184, 41501, 39447, 97422, 97041, 21913,
			40581, 76081, 13089, 28776, 54164, 55736, 36263, 71841, 34488, 74988, 55467, 43322, 9214, 36746,
			67981, 71877, 81683, 32461, 84091, 19422, 88366, 62054, 85664, 13409, 8003, 88276, 6989, 16607,
			33633, 85349, 5784, 25950, 97998, 74110, 16699, 60184, 92818, 79705, 10381, 1474, 18656, 50434,
			18232, 92132, 66537, 70141, 42854, 25120, 39581, 28249, 14215, 34810, 19767, 3409, 11807, 6566,
			66138, 42997, 41999, 67504, 87117, 28961, 5e3, 29673, 77726, 73225, 54753, 69712, 71576, 92337,
			17713, 63185, 87923, 91889, 68351, 17712, 75532, 93849, 48280, 62219, 317, 25290, 29209, 90927,
			92929, 92762, 60413, 2018, 31793, 76290, 73373, 80777, 60819, 77375, 57886, 47291, 99670, 32605,
			29064, 99476, 80999, 31217, 35, 91300, 14892, 73653, 26593, 25305, 56797, 12837, 39560, 27582,
			37253, 38531, 76489, 49946, 69108, 58687, 43092, 73807, 96282, 6648, 67431, 87124, 57694, 21660,
			64002, 6, 33600, 30245, 60636, 80164, 9285, 61426, 4658, 54130, 14710, 76553, 1904, 93668,
			63110, 98618, 5601, 32199, 74923, 98049, 49717, 55539, 35940, 58545, 43295, 35810, 45451, 38735,
			42065, 66769, 69825, 45461, 83881, 67372, 67351, 90612, 79502, 69460, 23108, 74421, 82990,
			46821, 40683, 71603, 55267, 48192, 50242, 79738, 96417, 6664, 19929, 23644, 41116, 51056, 219,
			45086, 32747, 49492, 15399, 24874, 80825, 95928, 61457, 45813, 59037, 16136, 3953, 83583, 5910,
			12654, 53630, 92997, 22168, 93491, 71897, 74579, 24022, 6278, 24049, 71670, 43044, 8474, 38572,
			77402, 35800, 7455, 96177, 41653, 74493, 20802, 65843, 73050, 73349, 2638, 65813, 96209, 49196,
			45007, 32207, 14097, 66059, 46681, 7534, 71263, 20582, 10171, 51514, 52142, 60961, 57951, 25637,
			37860, 21683, 86190, 90434, 94481, 85697, 95344, 2606, 74095, 61133, 7472, 64777, 94050, 41482,
			975, 23471, 76052, 82021, 87676, 91345, 20196, 2612, 86299, 44996, 40312, 65712, 46079, 88514,
			8610, 3685, 63197, 9073, 53105, 86824, 28112, 99306, 40706, 66840, 83003, 51590, 52755, 32285,
			68454, 85058, 13645, 23073, 24724, 52989, 71880, 21952, 44144, 74975, 76715, 7844, 46447, 86643,
			75579, 29276, 10864, 83179, 36721, 19300, 35066, 29383, 47478, 56644, 33354, 31414, 17643,
			92374, 85085, 88458, 87191, 85248, 34963, 76278, 53230, 13953, 76985, 70959, 36663, 5293, 32658,
			56767, 56997, 76736, 6558, 64248, 11907, 29123, 78458, 17678, 63805, 89973, 5076, 39263, 54404,
			4355, 64957, 74407, 99838, 18836, 78098, 6490, 74888, 73719, 80675, 86178, 56283, 33591, 96957,
			38382, 18772, 74773, 71229, 2603, 52673, 44609, 14843, 58418, 18060, 95459, 626, 30914, 13550,
			42195, 44863, 8871, 89182, 64446, 78422, 41140, 15312, 98274, 48168, 95651, 35562, 85386, 56252,
			72136, 85088, 68761, 78434, 98143, 61330, 2446, 64409, 49406, 99127, 98626, 55095, 44808, 13594,
			87370, 89472, 12833, 98932, 68064, 58193, 20225, 5192, 28425, 23978, 24542, 80845, 55858, 4015,
			21454, 37346, 51007, 17202, 10242, 12682, 55933, 96922, 22280, 75597, 50227, 70712, 44236,
			20470, 36320, 49339, 60536, 80083, 38880, 93327, 49522, 93585, 9918, 55268, 4671, 57526, 11457,
			48424, 54610, 7211, 78610, 9473, 72923, 27347, 30057, 76968, 26177, 59367, 46172, 88951, 40229,
			34921, 60405, 88959, 16779, 29547, 92231, 61997, 36002, 21080, 39795, 77221, 10012, 49748,
			76900, 15964, 3803, 40260, 92351, 92844, 10288, 57483, 10881, 70408, 75688, 16610, 1638, 93082,
			44282, 66849, 75702, 69428, 34047, 84968, 71281, 72328, 73143, 88672, 49802, 50639, 18129,
			93659, 58389, 49095, 45971, 34196, 84609, 59222, 19332, 17777, 41004, 47057, 30688, 16039,
			20906, 41477, 42915, 60877, 33864, 75195, 62294, 3371, 11672, 1370, 2486, 35553, 17907, 90621,
			45136, 9722, 67635, 12114, 63055, 16004, 21625, 24321, 20491, 26881, 66259, 94287, 54751, 36242,
			36557, 5842, 30687, 65418, 94608, 24741, 45887, 78800, 86912, 42076, 50287, 9284, 68891, 76368,
			83094, 96302, 35997, 30761, 97081, 9501, 68887, 32876, 1705, 34260, 95065, 45528, 88241, 30402,
			12318, 52430, 40139, 96986, 84900, 72408, 42027, 31676, 54382, 73370, 26184, 14024, 57444,
			57660, 52173, 30274, 93448, 63273, 77681, 74946, 2099, 69091, 19372, 66961, 14595, 58642, 75760,
			52253, 53148, 26074, 52293, 65359, 63971, 4833, 86492, 1227, 54505, 19515, 89889, 46933, 13364,
			33883, 83389, 36952, 52505, 67513, 40071, 31001, 3105, 87912, 29610, 75108, 37363, 28479, 43546,
			89992, 19550, 54863, 82633, 19209, 21548, 35022, 21960, 57961, 11815, 95867, 559, 26428, 69386,
			57453, 70147, 73538, 49562, 46806, 64550, 36653, 25718, 68792, 31113, 7607, 48037, 71020, 22666,
			65957, 11141, 39227, 7990, 19849, 65972, 74528, 40888, 55386, 95918, 92088, 91125, 53648, 66122,
			138, 79933, 71058, 34826, 97725, 69513, 22915, 18246, 52244, 91161, 40861, 40374, 13239, 56162,
			4703, 95851, 22824, 41271, 28202, 62852, 84238, 46625, 20031, 8524, 20077, 65817, 21174, 29279,
			57712, 22401, 67500, 30980, 74485, 26480, 21343, 30031, 61921, 35744, 57308, 71196, 1865, 49234,
			62616, 54021, 29008, 83672, 85839, 96836, 45077, 80900, 66906, 63526, 93824, 71820, 11033,
			20183, 85704, 4683, 63512, 39144, 56880, 64424, 95979, 17709, 94849, 31771, 5737, 84286, 16757,
			46256, 24478, 73180, 59978, 8254, 78963, 95437, 86351, 33824, 32540, 18357, 2668, 99260, 21284,
			81351, 70961, 10255, 6911, 47394, 72408, 23827, 59865, 96395, 30665, 43699, 3593, 29165, 23388,
			26628, 92402, 16731, 86740, 29493, 9069, 78653, 90094, 42735, 33682, 95041, 89887, 92369, 57949,
			81585, 50593, 14698, 4737, 72551, 57271, 59433, 156, 33966, 58773, 59108, 49578, 18100, 59836,
			73221, 21110, 1650, 11058, 47770, 66141, 84576, 58388, 40915, 94507, 32209, 17272, 65674, 95552,
			25685, 5345, 36995, 36302, 7971, 67001, 62062, 75939, 36005, 26739, 56484, 46885, 66348, 87666,
			78055, 44485, 82955, 85936, 9219, 1847, 92687, 72579, 45457, 78252, 98239, 4e4, 75563, 92408,
			17175, 78845, 32638, 26959, 35406, 59553, 57852, 7506, 9, 93172, 77713, 93880, 40981, 27924,
			9678, 24538, 52426, 84852, 83781, 23712, 82490, 77890, 22482, 66668, 55850, 25644, 44972, 62275,
			78089, 28894, 98685, 32998, 98766, 89119, 34355, 75127, 69797, 71419, 62067, 57990, 96514,
			50603, 79807, 26135, 29207, 43632, 32905, 38513, 18924, 88872, 20758, 70232, 60425, 1116, 24077,
			21369, 93541, 75329, 78656, 44251, 42014, 98154, 42552, 14575, 30765, 348, 1134, 71581, 68420,
			78141, 21105, 63305, 9718, 54851, 65867, 8595, 47390, 39182, 51174, 41478, 64433, 59628, 31945,
			87322, 78667, 95282, 5622, 26224, 19972, 97269, 98376, 14779, 51138, 49658, 45345, 4972, 52794,
			15737, 496, 48939, 63485, 42780, 16061, 59631, 37171, 13483, 56058, 51093, 62290, 88227, 17400,
			88433, 67363, 89507, 26482, 85964, 71336, 67799, 28342, 37747, 61722, 27180, 78755, 18603,
			42953, 6606, 23875, 56766, 1932, 36113, 62807, 84012, 21103, 9685, 69662, 76755, 13701, 95168,
			13169, 44726, 15284, 16702, 89617, 54397, 52052, 12835, 37741, 86434, 22400, 37947, 95763,
			86337, 35189, 22756, 47473, 16618, 42479, 47405, 14055, 64262, 66670, 89692, 54032, 94591,
			44149, 29854, 76691, 33263, 62048, 25116, 88598, 16119, 62116, 54517, 31883, 86707, 18895,
			81790, 71294, 2684, 15292, 48107, 14341, 91416, 75609, 92564, 39987, 2283, 89970, 95855, 80970,
			5432, 89860, 90293, 99851, 94648, 5598, 32171, 28793, 92305, 64244, 8277, 93391, 96717, 34464,
			29838, 10664, 28050, 60122, 77934, 10758, 84922, 92220, 45071, 97697, 36368, 17792, 84792,
			76594, 67319, 51886, 5665, 45201, 11348, 9254, 7510, 51039, 91683, 84500, 85338, 5555, 19633,
			3870, 39576, 41486, 58524, 54508, 20707, 58504, 39642, 22454, 80069, 83455, 31043, 90794, 51934,
			3295, 26582, 16300, 74990, 22197, 83310, 69642, 81113, 58558, 84833, 17105, 46659, 25003, 85749,
			44829, 4103, 67516, 76458, 52392, 53546, 70291, 98846, 67315, 30686, 18555, 29755, 5923, 22732,
			19501, 56181, 85351, 5023, 4808, 56911, 16793, 75336, 49712, 27723, 96974, 34321, 5454, 12862,
			71924, 45928, 95697, 68664, 58183, 78104, 42483, 71204, 99628, 40642, 56410, 17350, 13396,
			76724, 87509, 9158, 83708, 27298, 92651, 95086, 38851, 63558, 89810, 1580, 32518, 35795, 26514,
			56322, 78635, 63731, 91428, 7247, 66460, 38671, 26799, 22549, 47991, 46064, 80467, 40083, 17141,
			39152, 99872, 27561, 75389, 74778, 94893, 82935, 99076, 93419, 10474, 84436, 47536, 16719,
			60136, 80566, 28404, 74525, 74212, 3704, 65516, 98197, 34210, 64140, 22238, 49939, 99542, 27481,
			21992, 78181, 90060, 71365, 66935, 29578, 14961, 8569, 9454, 43308, 66753, 45972, 93572, 16382,
			87320, 37183, 25478, 38164, 31997, 69856, 60898, 63968, 62264, 4799, 17591, 89937, 73905, 55890,
			88285, 2448, 40398, 54180, 65869, 45155, 43407, 39105, 339, 51619, 20203, 21189, 68245, 76912,
			1222, 76411, 82679, 7, 66047, 32043, 42627, 16638, 27019, 15248, 66444, 8249, 18790, 82150,
			54084, 84469, 3426, 50226, 99868, 88894, 43769, 66384, 8593, 41414, 2976, 60053, 51866, 87904,
			74135, 53842, 59520, 67482, 16995, 32328, 29555, 49067, 2799, 68851, 41049, 97190, 53984, 99755,
			46412, 45885, 64e3, 21962, 36438, 71742, 57223, 66599, 86071, 31436, 32667, 98099, 38399, 47377,
			5171, 2742, 48803, 17823, 22093, 9866, 691, 5514, 25546, 2114, 5919, 56181, 96052, 67211, 61712,
			25995, 3188, 23833, 38549, 44775, 55355, 61548, 55988, 47309, 23749, 30667, 70732, 33299, 16127,
			30842, 78961, 41072, 9876, 18903, 30292, 25275, 61881, 15939, 72573, 84502, 92654, 97226, 53434,
			77025, 63892, 12421, 33644, 39445, 30933, 84218, 13757, 37719, 84450, 2697, 60309, 22402, 80310,
			92771, 45205, 72792, 95776, 85945, 74651, 216, 50842, 47854, 21916, 61588, 75405, 10495, 83083,
			60427, 78495, 99809, 47890, 22993, 21508, 9459, 26845, 98130, 1184, 46438, 27698, 40652, 65654,
			98517, 1096, 6998, 49133, 57041, 77983, 58708, 42176, 67356, 324, 70063, 10597, 65205, 25622,
			34336, 16640, 27896, 26907, 86760, 48244, 89650, 44997, 51609, 28934, 9171, 97859, 97213, 19859,
			41037, 64081, 94781, 27683, 41521, 52871, 86935, 26486, 38744, 25943, 60617, 6414, 42292, 46204,
			53262, 30201, 38776, 88831, 97253, 67282, 72860, 18452, 60927, 81504, 57713, 30296, 10896,
			39900, 67135, 42772, 4631, 55283, 39253, 25264, 1809, 12874, 88035, 88421, 90491, 83290, 6884,
			15444, 90113, 20406, 20796, 40239, 34431, 15018, 45600, 17241, 26611, 9551, 89126, 65673, 31708,
			91252, 39647, 63011, 24193, 58932, 89326, 33491, 53217, 27976, 70151, 37531, 53576, 23931,
			11789, 73073, 52171, 89301, 51718, 15385, 79487, 66436, 35771, 34163, 86540, 42665, 80748,
			77622, 14679, 40185, 25030, 42622, 13162, 17048, 24243, 59985, 59807, 60562, 3595, 10135, 29199,
			69784, 59796, 38194, 58432, 50943, 40422, 63035, 3208, 81440, 90749, 88046, 32218, 88092, 22224,
			2627, 91576, 16781, 43948, 57795, 71073, 27817, 87077, 82717, 24473, 42096, 76920, 88864, 90537,
			14715, 42551, 45066, 24316, 37361, 38582, 21871, 14672, 93362, 21727, 57021, 94313, 39562,
			64985, 94028, 46094, 43845, 91838, 79574, 7597, 3153, 56783, 18817, 74711, 6883, 91061, 31674,
			73729, 99315, 66183, 57647, 74484, 68077, 33224, 397, 56753, 53158, 71872, 68153, 9298, 20961,
			49656, 33407, 95683, 14328, 44708, 72952, 27048, 67887, 28741, 46752, 88177, 95894, 40086,
			88534, 87112, 68614, 83073, 88794, 96799, 67588, 75049, 84603, 83140, 97347, 87316, 73087,
			77135, 71883, 98643, 3808, 8848, 14133, 60447, 1366, 72976, 1868, 51667, 63279, 60040, 88264,
			79152, 3474, 61366, 20523, 21584, 93712, 83654, 89761, 90154, 96345, 37539, 32556, 74254, 70603,
			97122, 44978, 78028, 8943, 13778, 11080, 34271, 68276, 85372, 48410, 94516, 15427, 75323, 71685,
			70774, 50342, 33771, 3678, 42321, 69788, 41758, 55004, 30992, 17402, 63523, 42328, 87171, 24751,
			15084, 33884, 83655, 88345, 69602, 52606, 57886, 18034, 3381, 75796, 35901, 77480, 28683, 68324,
			66035, 7223, 14926, 16128, 13645, 90370, 31949, 11057, 98849, 29499, 21565, 30786, 83292, 92392,
			37104, 36899, 49906, 79368, 43710, 80365, 88735, 75275, 21664, 57965, 19002, 301, 12658, 94385,
			1717, 96191, 50404, 80166, 93965, 24688, 27839, 10812, 31715, 92127, 42588, 93307, 80834, 11317,
			26583, 25769, 98227, 14884, 58462, 29148, 68662, 26872, 72927, 79021, 51622, 29521, 33355,
			45701, 45996, 33782, 93424, 16530, 96086, 17329, 74020, 11501, 46660, 5583, 22277, 77653, 55430,
			84644, 448, 86828, 58855, 67451, 95264, 67386, 82424, 52611, 60012, 88620, 72894, 94716, 22262,
			99813, 69592, 63464, 33163, 91857, 47904, 22209, 78590, 68615, 52952, 31441, 41313, 18550,
			72685, 68825, 4795, 53971, 14592, 39634, 23682, 76630, 2731, 81481, 86542, 23727, 54291, 56045,
			61635, 32186, 9355, 73416, 63532, 24340, 18886, 84832, 30654, 48543, 18339, 65024, 91197, 64624,
			74648, 9660, 27897, 49771, 11123, 8732, 49393, 12911, 72416, 17834, 18878, 62754, 85072, 23727,
			56577, 51257, 83291, 12329, 16203, 91681, 68137, 79959, 43609, 58987, 2026, 42969, 59144, 84349,
			75214, 76972, 22633, 64104, 53799, 16851, 99197, 70476, 77113, 46320, 88693, 37711, 96536,
			68156, 7119, 2104, 49435, 77706, 18924, 24957, 92406, 87148, 70482, 36491, 42605, 54440, 7893,
			31618, 35707, 65130, 30007, 75706, 77266, 37100, 9601, 87681, 42543, 69847, 81848, 32034, 49429,
			99434, 62209, 17125, 55227, 61634, 52574, 83649, 28725, 70119, 62467, 80676, 21192, 99584,
			21310, 25292, 72781, 17186, 10393, 98390, 19789, 92931, 36234, 62627, 23437, 3885, 58822, 82941,
			43806, 8172, 23790, 72295, 36196, 98200, 2889, 87619, 13846, 56197, 27151, 21238, 48794, 81100,
			62643, 40001, 39243, 33213, 78416, 194, 91369, 79342, 36404, 52308, 13741, 24442, 88610, 12659,
			11574, 70052, 93039, 79367, 41792, 61816, 35435, 47192, 97596, 28330, 41145, 16918, 62865, 9576,
			45857, 68737, 90124, 16703, 7071, 48433, 57222, 34435, 800, 72496, 16449, 68187, 28739, 97672,
			86818, 50768, 40807, 88681, 64340, 2224, 19703, 59245, 90905, 31239, 84216, 93942, 97371, 16842,
			92168, 52692, 16064, 84686, 89444, 27938, 98406, 41365, 4515, 20494, 18813, 16242, 10634, 61566,
			18592, 78057, 8720, 33739, 78345, 87693, 30242, 70545, 55521, 23687, 9160, 8655, 38811, 61768,
			7228, 5567, 5561, 82071, 85, 50145, 23113, 97761, 88441, 14891, 72188, 85166, 37189, 75671,
			81377, 92470, 73645, 93258, 6610, 12185, 43065, 26704, 47922, 56650, 7527, 18006, 56948, 51675,
			16658, 66402, 1047, 81624, 77395, 62310, 73262, 66050, 57275, 32936, 87641, 51528, 58183, 21952,
			84098, 28913, 28622, 18140, 89796, 41317, 93954, 67690, 64667, 57092, 21315, 4731, 76115, 77291,
			11204, 8634, 93034, 27411, 27149, 13843, 9817, 9407, 84492, 28444, 59901, 14592, 89654, 66207,
			66232, 80293, 74502, 36925, 55515, 10121, 16768, 4720, 71502, 40500, 21406, 571, 87320, 81683,
			42788, 86367, 44686, 22159, 67015, 35892, 49668, 83991, 72088, 30210, 74009, 86370, 97956, 2132,
			93512, 54819, 26094, 51409, 21485, 94764, 85806, 13393, 48543, 7042, 76538, 64224, 47909, 9994,
			23750, 17351, 52141, 30486, 60380, 86546, 66606, 36913, 58173, 45709, 83679, 82617, 23381, 9603,
			61107, 566, 6572, 64745, 10614, 86371, 43244, 97154, 10397, 50975, 68006, 20045, 16942, 25536,
			74031, 31807, 70133, 78790, 40341, 68730, 39635, 39013, 66841, 44043, 96215, 21270, 59427,
			25034, 40645, 84741, 52083, 54503, 36861, 27659, 95463, 53847, 40921, 70116, 61536, 56756, 8967,
			31079, 20097, 76014, 99818, 16606, 19713, 66904, 27106, 24874, 96701, 73287, 76772, 6073, 57343,
			51428, 91171, 28299, 17520, 64903, 4177, 36071, 94952, 59008, 28543, 11576, 74547, 13260, 20688,
			41261, 2780, 6633, 37536, 8844, 95774, 49323, 30448, 14154, 83379, 71259, 23302, 68402, 43750,
			88505, 15575, 44927, 6584, 29867, 21541, 65763, 12154, 86616, 79877, 73259, 68626, 98962, 68548,
			86576, 48046, 51755, 64995, 3661, 64585, 81550, 46798, 49319, 50206, 22024, 5175, 12923, 23427,
			55915, 91723, 55831, 83784, 81034, 86779, 34622, 84570, 18960, 48798, 42970, 95789, 39465,
			82353, 68905, 44234, 18244, 54345, 5592, 89361, 14644, 67924, 66415, 89349, 88530, 72096, 44459,
			5258, 48317, 48866, 56886, 90458, 75889, 4514, 37227, 11302, 4667, 2129, 80414, 86289, 15887,
			87380, 50749, 83220, 50529, 20619, 11606, 36531, 23409, 78122, 19566, 76564, 33045, 66703,
			30017, 35347, 35038, 12952, 13971, 3922, 98702, 11786, 38388, 69556, 76728, 60535, 59961, 23634,
			42211, 98387, 34880, 27755, 93182, 99040, 96390, 65989, 38375, 3652, 59657, 57431, 24666, 11061,
			64713, 85185, 72849, 58611, 31220, 26657, 77056, 24553, 24993, 5210, 89024, 32054, 46997, 92652,
			28363, 98992, 22593, 97710, 47766, 37646, 93573, 95502, 33790, 92973, 27766, 62671, 89698,
			10877, 73893, 41004, 96035, 18795, 48080, 59666, 30241, 35233, 87353, 43647, 13404, 41982,
			19264, 29229, 61369, 8309, 39383, 42305, 25944, 13577, 51545, 68990, 69801, 37145, 79189, 55897,
			57793, 66816, 21930, 56771, 79296, 73793, 21632, 42301, 23696, 72641, 56310, 85576, 3004, 25669,
			69221, 32996, 23040, 65782, 23712, 13414, 10758, 15590, 97298, 74246, 51511, 46900, 36795,
			38292, 3852, 6384, 84421, 3446, 91670, 45312, 27609, 87034, 6683, 83891, 88991, 16533, 9197,
			34427, 60384, 48525, 90978, 46107, 21693, 12956, 21804, 46558, 37682, 81207, 85840, 53238,
			35026, 4835, 53264, 41376, 17783, 64756, 39278, 25403, 33042, 20954, 31193, 24247, 45911, 92453,
			25370, 86602, 48574, 57865, 26436, 16122, 76614, 17028, 21262, 59718, 77821, 14036, 31033,
			90563, 45410, 15158, 90209, 84089, 38053, 60780, 54166, 14255, 33120, 27171, 71798, 91214,
			80040, 56699, 12475, 40193, 59415, 4769, 75920, 1036, 2692, 75862, 16612, 73670, 61182, 3305,
			90334, 187, 91659, 28063, 75684, 50017, 82643, 9282, 77376, 85469, 8164, 5584, 36623, 82597,
			83859, 3435, 98460, 70095, 80257, 4381, 6501, 8924, 35514, 14297, 54373, 71369, 5172, 15955,
			82441, 4636, 48215, 6821, 3385, 17663, 40107, 55679, 30366, 42390, 95895, 16083, 58499, 17176,
			55993, 51034, 49296, 4010, 78974, 35930, 2019, 96226, 27167, 68245, 53109, 59037, 37843, 79243,
			10262, 58797, 61490, 82590, 52411, 54783, 29447, 94551, 30026, 97959, 93939, 73217, 82573,
			62154, 78291, 33728, 39102, 11484, 86210, 43794, 73553, 87435, 1110, 77108, 56521, 78610, 8254,
			1842, 43068, 70415, 79195, 26136, 49786, 47279, 38471, 20379, 54704, 86614, 91138, 51595, 50818,
			80186, 73087, 17262, 94735, 4952, 27935, 4928, 74862, 51392, 62388, 9570, 38485, 30594, 56278,
			47395, 72762, 94597, 72279, 16010, 34697, 54475, 67874, 78014, 88381, 4045, 41494, 55178, 46054,
			24373, 1824, 55333, 7525, 97908, 61178, 84635, 2199, 35361, 4803, 21907, 79414, 66083, 54782,
			58692, 28332, 41851, 28198, 55819, 37313, 67046, 16147, 90478, 71230, 34141, 85002, 44332,
			35906, 429, 39744, 773, 22909, 19536, 98986, 90945, 45209, 85439, 92265, 25291, 22775, 60611,
			49159, 95701, 36113, 53923, 60824, 84935, 29656, 50007, 86624, 61691, 76150, 32187, 42765,
			60660, 13859, 10792, 88210, 29374, 29563, 45188, 28811, 19739, 67649, 73775, 99247, 48414,
			91067, 68253, 9452, 90116, 91737, 73979, 62370, 69112, 58791, 20349, 71480, 56852, 36919, 87977,
			77609, 68738, 85159, 4918, 70076, 46473, 4122, 57713, 1426, 50987, 77910, 66211, 62546, 77749,
			96462, 34304, 77441, 12104, 91805, 10287, 60943, 49632, 83116, 25716, 23113, 22707, 77770,
			31176, 6759, 46130, 4739, 55554, 3843, 31653, 70834, 72877, 41561, 36903, 23010, 6663, 2266,
			16360, 70118, 91936, 17098, 77278, 4880, 23484, 94970, 41826, 46733, 93484, 68350, 38861, 18134,
			32936, 241, 24803, 13876, 93278, 5039, 35873, 44418, 5305, 28510, 36115, 46717, 15238, 78607,
			23464, 68635, 55712, 55007, 92411, 65739, 4858, 67537, 37041, 67453, 89801, 45963, 14800, 14225,
			65655, 80463, 9716, 77255, 65136, 11230, 76323, 81433, 36445, 86523, 61058, 59560, 19380, 40791,
			48073, 29626, 36661, 87907, 57369, 41623, 13705, 3880, 45088, 55444, 41003, 27754, 1450, 75312,
			71801, 99600, 60719, 54182, 29245, 63315, 73758, 42973, 32702, 10855, 56363, 14638, 84424,
			27178, 78195, 3133, 70865, 48019, 26117, 7151, 52107, 85562, 41347, 50486, 69457, 86961, 95482,
			11857, 93587, 45680, 42145, 13029, 10043, 5142, 49213, 54525, 85761, 42707, 70754, 33768, 87671,
			85038, 58900, 88438, 20004, 63390, 14815, 38875, 73417, 82875, 89481, 55517, 944, 15773, 61814,
			32915, 27868, 5510, 21916, 28426, 89881, 16680, 88850, 11056, 51991, 4230, 39107, 49216, 40065,
			4523, 75848, 95349, 56034, 10724, 9885, 88232, 42478, 65702, 95696, 39746, 66032, 88082, 86905,
			30007, 75068, 66629, 7358, 26706, 90511, 72843, 67857, 20061, 98581, 69682, 38e3, 14186, 70,
			2290, 17269, 30909, 69449, 19997, 13275, 2444, 84985, 51290, 97641, 15092, 69650, 21920, 19617,
			7418, 49725, 91090, 20805, 28627, 80665, 67192, 34697, 57667, 99323, 50101, 40587, 35081, 14037,
			34414, 19898, 60779, 83267, 87499, 29596, 41852, 15813, 32419, 72232, 8322, 39184, 46525, 13833,
			65743, 94595, 37363, 4711, 35386, 96413, 10627, 62625, 56555, 12919, 93218, 25191, 98380, 51923,
			66181, 5788, 73491, 1452, 487, 12277, 45415, 11884, 61300, 94528, 9181, 26616, 11455, 31514,
			63290, 45035, 42759, 33804, 85721, 80979, 46010, 50975, 72482, 31231, 3086, 58941, 46102, 25773,
			89742, 29788, 96741, 88523, 14922, 88262, 76305, 57676, 93259, 2396, 69145, 26074, 30056, 3853,
			75317, 56639, 66203, 38923, 48939, 22813, 91864, 10934, 6714, 84099, 25631, 73223, 95630, 97552,
			45950, 22197, 42886, 33764, 1263, 41856, 82057, 62349, 94091, 78028, 62651, 18911, 5693, 92561,
			97821, 41994, 92343, 76785, 22216, 4203, 5038, 86151, 23596, 24338, 77181, 51761, 97693, 10955,
			98159, 37568, 58932, 72128, 27303, 99608, 31688, 57557, 91022, 43036, 93927, 32869, 53653,
			55205, 33139, 47271, 31224, 51650, 36422, 86857, 73799, 22068, 43376, 84760, 44898, 65776,
			42451, 71480, 38509, 41673, 44141, 75918, 95652, 68981, 83001, 48815, 98086, 67950, 27986,
			33175, 43624, 55274, 71051, 61124, 51550, 64967, 31570, 15748, 19159, 38174, 51078, 79811,
			39183, 57527, 96550, 85168, 28824, 47466, 56993, 13151, 96664, 29735, 70251, 1079, 4314, 77714,
			11507, 1440, 48415, 31984, 99915, 20282, 26524, 18057, 4992, 40521, 98108, 84045, 91961, 79256,
			72244, 25788, 5487, 23595, 73302, 14205, 8925, 27625, 64343, 28821, 37992, 67156, 83320, 31106,
			10884, 30735, 15067, 51091, 15668, 48777, 50770, 19169, 76504, 41165, 29749, 92812, 8065, 66782,
			26841, 1411, 95461, 61134, 18699, 52261, 60469, 81373, 44825, 11448, 73320, 30151, 56991, 31372,
			6655, 36472, 86292, 30247, 30931, 21029, 53410, 9859, 37267, 47514, 3492, 49008, 94727, 25234,
			40546, 53417, 36492, 25723, 76227, 58456, 15979, 34876, 9574, 34392, 3751, 36933, 83921, 65108,
			63135, 67572, 40184, 21098
		],
		l = new Array(16),
		h = [16, 8, 16, 24],
		f = 4,
		p = 0;
	! function() {
		for (var t = 0; t < 16; t++) {
			l[t] = new Array(256);
			for (var e = 0; e < 256; e++) l[t][e] = e | e << 8 | e << 16 | e << 24 | 0;
			for (var n = 3; 0 <= n; n--)
				for (var r = 0; r < 255; r++) {
					var i = 255 << (n << 3),
						o = 0 | l[t][r],
						s = function(t, e) {
							var n = e - t + 1,
								r = 0,
								i = 1;
							do {
								for (r = 0, i = 1; i < n; i *= 10) r = 10 * r + (f < 0 && (f = 4, p++), u[
									p] % Math.pow(10, f + 1) / Math.pow(10, f--) | 0)
							} while ((i / n | 0) * n <= r);
							return t + r % n | 0
						}(r, 255);
					l[t][r] = l[t][r] & ~i | l[t][s] & i | 0, l[t][s] = l[t][s] & ~i | o & i | 0
				}
		}
	}();
	(function(t, e) {
		if ("function" != typeof e && null !== e) throw new TypeError(
			"Super expression must either be null or a function");
		t.prototype = Object.create(e && e.prototype, {
			constructor: {
				value: t,
				writable: !0,
				configurable: !0
			}
		}), e && a(t, e)
	})(d, r.a),
	function(t, e) {
		for (var n = 0; n < e.length; n++) {
			var r = e[n];
			r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0),
				Object.defineProperty(t, r.key, r)
		}
	}(d.prototype, [{
		key: "reset",
		value: function() {
			o(s(d.prototype), "reset", this).call(this), this.state.hash = new Array(this
				.options.length / 32 | 0);
			for (var t = 0; t < this.state.hash.length; t++) this.state.hash[t] = 0
		}
	}, {
		key: "processBlock",
		value: function(t) {
			for (var e = 0; e < this.state.hash.length; e++) this.W[e] = 0 | this.state.hash[e];
			for (var n = this.state.hash.length; n < 16; n++) this.W[n] = 0 | t[n - this.state
				.hash.length];
			for (var r = 0; r < this.options.rounds << 1; r += 2)
				for (var i = 0; i < 4; i++) {
					for (var o = 0; o < 16; o++) {
						var s = 0 | l[r + (o / 2 | 0) % 2][255 & this.W[o]];
						this.W[o - 1 >>> 0 & 15] ^= s, this.W[o + 1 & 15] ^= s
					}
					for (var a = 0; a < 16; a++) this.W[a] = Object(c.b)(this.W[a], h[i])
				}
			for (var u = 0; u < this.state.hash.length; u++) this.state.hash[u] = this.state
				.hash[u] ^ this.W[15 - u] | 0
		}
	}, {
		key: "finalize",
		value: function() {
			return 0 < this.state.message.length && this.addPaddingZero(this.blockSizeInBytes -
				this.state.message.length | 0), this.addPaddingZero(this.blockSizeInBytes -
				8 | 0), this.addLengthBits(), this.process(), this.getStateHash()
		}
	}]), r = d;

	function d(t) {
		var e;
		return function(t) {
				if (!(t instanceof d)) throw new TypeError("Cannot call a class as a function")
			}(this), (t = t || {}).length = t.length || 128, t.rounds = t.rounds || 8, e = this, (t = !(t =
				s(d).call(this, t)) || "object" !== i(t) && "function" != typeof t ? function() {
				if (void 0 !== e) return e;
				throw new ReferenceError("this hasn't been initialised - super() hasn't been called")
			}() : t).blockSize = 16 - t.state.hash.length, t.blockSizeInBytes = t.blockSize * t.unitSize, t
			.W = new Array(16), t
	}
	e.a = r
}, function(t, e, n) {
	"use strict";
	var r = n(5),
		u = n(0);

	function i(t) {
		return (i = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(t) {
			return typeof t
		} : function(t) {
			return t && "function" == typeof Symbol && t.constructor === Symbol && t !== Symbol
				.prototype ? "symbol" : typeof t
		})(t)
	}

	function o(t, e) {
		for (var n = 0; n < e.length; n++) {
			var r = e[n];
			r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0),
				Object.defineProperty(t, r.key, r)
		}
	}

	function s(t, e, n) {
		return (s = "undefined" != typeof Reflect && Reflect.get ? Reflect.get : function(t, e, n) {
			t = function(t, e) {
				for (; !Object.prototype.hasOwnProperty.call(t, e) && null !== (t = a(t)););
				return t
			}(t, e);
			if (t) {
				e = Object.getOwnPropertyDescriptor(t, e);
				return e.get ? e.get.call(n) : e.value
			}
		})(t, e, n || t)
	}

	function a(t) {
		return (a = Object.setPrototypeOf ? Object.getPrototypeOf : function(t) {
			return t.__proto__ || Object.getPrototypeOf(t)
		})(t)
	}

	function c(t, e) {
		return (c = Object.setPrototypeOf || function(t, e) {
			return t.__proto__ = e, t
		})(t, e)
	}
	for (var l = [
			[7, 12, 17, 22],
			[5, 9, 14, 20],
			[4, 11, 16, 23],
			[6, 10, 15, 21]
		], h = new Array(64), f = 0; f < 64; f++) h[f] = 4294967296 * Math.abs(Math.sin(f + 1)) | 0;
	(function(t, e) {
		if ("function" != typeof e && null !== e) throw new TypeError(
			"Super expression must either be null or a function");
		t.prototype = Object.create(e && e.prototype, {
			constructor: {
				value: t,
				writable: !0,
				configurable: !0
			}
		}), e && c(t, e)
	})(p, r.a), n = [{
		key: "FF",
		value: function(t, e, n) {
			return t & e | ~t & n
		}
	}, {
		key: "GG",
		value: function(t, e, n) {
			return t & n | e & ~n
		}
	}, {
		key: "HH",
		value: function(t, e, n) {
			return t ^ e ^ n
		}
	}, {
		key: "II",
		value: function(t, e, n) {
			return e ^ (t | ~n)
		}
	}, {
		key: "CC",
		value: function(t, e, n, r, i, o, s, a) {
			return Object(u.a)(n + t(r, i, o) + s + e, a) + r | 0
		}
	}], o((r = p).prototype, [{
		key: "reset",
		value: function() {
			s(a(p.prototype), "reset", this).call(this), this.state.hash = [1732584193, -
				271733879, -1732584194, 271733878
			]
		}
	}, {
		key: "processBlock",
		value: function(t) {
			var e = 0 | this.state.hash[0],
				n = 0 | this.state.hash[1],
				r = 0 | this.state.hash[2],
				i = 0 | this.state.hash[3],
				e = p.CC(p.FF, h[0], e, n, r, i, t[0], l[0][0]),
				i = p.CC(p.FF, h[1], i, e, n, r, t[1], l[0][1]),
				r = p.CC(p.FF, h[2], r, i, e, n, t[2], l[0][2]),
				n = p.CC(p.FF, h[3], n, r, i, e, t[3], l[0][3]);
			e = p.CC(p.FF, h[4], e, n, r, i, t[4], l[0][0]), i = p.CC(p.FF, h[5], i, e, n,
					r, t[5], l[0][1]), r = p.CC(p.FF, h[6], r, i, e, n, t[6], l[0][2]), n =
				p.CC(p.FF, h[7], n, r, i, e, t[7], l[0][3]), e = p.CC(p.FF, h[8], e, n, r,
					i, t[8], l[0][0]), i = p.CC(p.FF, h[9], i, e, n, r, t[9], l[0][1]), r =
				p.CC(p.FF, h[10], r, i, e, n, t[10], l[0][2]), n = p.CC(p.FF, h[11], n, r,
					i, e, t[11], l[0][3]), e = p.CC(p.FF, h[12], e, n, r, i, t[12], l[0][
				0]), i = p.CC(p.FF, h[13], i, e, n, r, t[13], l[0][1]), r = p.CC(p.FF, h[
					14], r, i, e, n, t[14], l[0][2]), n = p.CC(p.FF, h[15], n, r, i, e, t[
					15], l[0][3]), e = p.CC(p.GG, h[16], e, n, r, i, t[1], l[1][0]), i = p
				.CC(p.GG, h[17], i, e, n, r, t[6], l[1][1]), r = p.CC(p.GG, h[18], r, i, e,
					n, t[11], l[1][2]), n = p.CC(p.GG, h[19], n, r, i, e, t[0], l[1][3]),
				e = p.CC(p.GG, h[20], e, n, r, i, t[5], l[1][0]), i = p.CC(p.GG, h[21], i,
					e, n, r, t[10], l[1][1]), r = p.CC(p.GG, h[22], r, i, e, n, t[15], l[1][
					2
				]), n = p.CC(p.GG, h[23], n, r, i, e, t[4], l[1][3]), e = p.CC(p.GG, h[24],
					e, n, r, i, t[9], l[1][0]), i = p.CC(p.GG, h[25], i, e, n, r, t[14], l[
					1][1]), r = p.CC(p.GG, h[26], r, i, e, n, t[3], l[1][2]), n = p.CC(p.GG,
					h[27], n, r, i, e, t[8], l[1][3]), e = p.CC(p.GG, h[28], e, n, r, i, t[
					13], l[1][0]), i = p.CC(p.GG, h[29], i, e, n, r, t[2], l[1][1]), r = p
				.CC(p.GG, h[30], r, i, e, n, t[7], l[1][2]), n = p.CC(p.GG, h[31], n, r, i,
					e, t[12], l[1][3]), e = p.CC(p.HH, h[32], e, n, r, i, t[5], l[2][0]),
				i = p.CC(p.HH, h[33], i, e, n, r, t[8], l[2][1]), r = p.CC(p.HH, h[34], r,
					i, e, n, t[11], l[2][2]), n = p.CC(p.HH, h[35], n, r, i, e, t[14], l[2][
					3
				]), e = p.CC(p.HH, h[36], e, n, r, i, t[1], l[2][0]), i = p.CC(p.HH, h[37],
					i, e, n, r, t[4], l[2][1]), r = p.CC(p.HH, h[38], r, i, e, n, t[7], l[2]
					[2]), n = p.CC(p.HH, h[39], n, r, i, e, t[10], l[2][3]), e = p.CC(p.HH,
					h[40], e, n, r, i, t[13], l[2][0]), i = p.CC(p.HH, h[41], i, e, n, r, t[
					0], l[2][1]), r = p.CC(p.HH, h[42], r, i, e, n, t[3], l[2][2]), n = p
				.CC(p.HH, h[43], n, r, i, e, t[6], l[2][3]), e = p.CC(p.HH, h[44], e, n, r,
					i, t[9], l[2][0]), i = p.CC(p.HH, h[45], i, e, n, r, t[12], l[2][1]),
				r = p.CC(p.HH, h[46], r, i, e, n, t[15], l[2][2]), n = p.CC(p.HH, h[47], n,
					r, i, e, t[2], l[2][3]), e = p.CC(p.II, h[48], e, n, r, i, t[0], l[3][
					0]), i = p.CC(p.II, h[49], i, e, n, r, t[7], l[3][1]), r = p.CC(p.II, h[
					50], r, i, e, n, t[14], l[3][2]), n = p.CC(p.II, h[51], n, r, i, e, t[
					5], l[3][3]), e = p.CC(p.II, h[52], e, n, r, i, t[12], l[3][0]), i = p
				.CC(p.II, h[53], i, e, n, r, t[3], l[3][1]), r = p.CC(p.II, h[54], r, i, e,
					n, t[10], l[3][2]), n = p.CC(p.II, h[55], n, r, i, e, t[1], l[3][3]),
				e = p.CC(p.II, h[56], e, n, r, i, t[8], l[3][0]), i = p.CC(p.II, h[57], i,
					e, n, r, t[15], l[3][1]), r = p.CC(p.II, h[58], r, i, e, n, t[6], l[3][
					2]), n = p.CC(p.II, h[59], n, r, i, e, t[13], l[3][3]), e = p.CC(p.II,
					h[60], e, n, r, i, t[4], l[3][0]), i = p.CC(p.II, h[61], i, e, n, r, t[
					11], l[3][1]), r = p.CC(p.II, h[62], r, i, e, n, t[2], l[3][2]), n = p
				.CC(p.II, h[63], n, r, i, e, t[9], l[3][3]), this.state.hash[0] = this.state
				.hash[0] + e | 0, this.state.hash[1] = this.state.hash[1] + n | 0, this
				.state.hash[2] = this.state.hash[2] + r | 0, this.state.hash[3] = this.state
				.hash[3] + i | 0
		}
	}, {
		key: "finalize",
		value: function() {
			return this.addPaddingISO7816(this.state.message.length < 56 ? 56 - this.state
					.message.length | 0 : 120 - this.state.message.length | 0), this
				.addLengthBits(), this.process(), this.getStateHash()
		}
	}]), o(r, n), n = p;

	function p() {
		return function(t) {
				if (!(t instanceof p)) throw new TypeError("Cannot call a class as a function")
			}(this), t = this, !(e = a(p).apply(this, arguments)) || "object" !== i(e) && "function" !=
			typeof e ? function() {
				if (void 0 !== t) return t;
				throw new ReferenceError("this hasn't been initialised - super() hasn't been called")
			}() : e;
		var t, e
	}
	e.a = n
}, function(t, e, n) {
	"use strict";
	var r = n(3),
		u = n(0);

	function i(t) {
		return (i = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(t) {
			return typeof t
		} : function(t) {
			return t && "function" == typeof Symbol && t.constructor === Symbol && t !== Symbol
				.prototype ? "symbol" : typeof t
		})(t)
	}

	function o(t, e, n) {
		return (o = "undefined" != typeof Reflect && Reflect.get ? Reflect.get : function(t, e, n) {
			t = function(t, e) {
				for (; !Object.prototype.hasOwnProperty.call(t, e) && null !== (t = s(t)););
				return t
			}(t, e);
			if (t) {
				e = Object.getOwnPropertyDescriptor(t, e);
				return e.get ? e.get.call(n) : e.value
			}
		})(t, e, n || t)
	}

	function s(t) {
		return (s = Object.setPrototypeOf ? Object.getPrototypeOf : function(t) {
			return t.__proto__ || Object.getPrototypeOf(t)
		})(t)
	}

	function a(t, e) {
		return (a = Object.setPrototypeOf || function(t, e) {
			return t.__proto__ = e, t
		})(t, e)
	}
	var c = [1518500249, 1859775393, 2400959708, 3395469782],
		r = (function(t, e) {
			if ("function" != typeof e && null !== e) throw new TypeError(
				"Super expression must either be null or a function");
			t.prototype = Object.create(e && e.prototype, {
				constructor: {
					value: t,
					writable: !0,
					configurable: !0
				}
			}), e && a(t, e)
		}(l, r.a), function(t, e) {
			for (var n = 0; n < e.length; n++) {
				var r = e[n];
				r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !
					0), Object.defineProperty(t, r.key, r)
			}
		}(l.prototype, [{
			key: "reset",
			value: function() {
				o(s(l.prototype), "reset", this).call(this), this.state.hash = [1732584193,
					-271733879, -1732584194, 271733878, -1009589776
				]
			}
		}, {
			key: "processBlock",
			value: function(t) {
				for (var e = 0 | this.state.hash[0], n = 0 | this.state.hash[1], r = 0 |
						this.state.hash[2], i = 0 | this.state.hash[3], o = 0 | this.state
						.hash[4], s = 0; s < this.options.rounds; s++) {
					this.W[s] = s < 16 ? 0 | t[s] : 0 | Object(u.a)(this.W[s - 3] ^ this.W[
						s - 8] ^ this.W[s - 14] ^ this.W[s - 16], 1);
					var a = Object(u.a)(e, 5) + o + this.W[s] + c[s / 20 >> 0] | 0,
						a = s < 20 ? a + (n & r | ~n & i) | 0 : !(s < 40) && s < 60 ? a + (
							n & r | n & i | r & i) | 0 : a + (n ^ r ^ i) | 0,
						o = i,
						i = r,
						r = 0 | Object(u.a)(n, 30),
						n = e,
						e = a
				}
				this.state.hash[0] = this.state.hash[0] + e | 0, this.state.hash[1] = this
					.state.hash[1] + n | 0, this.state.hash[2] = this.state.hash[2] + r | 0,
					this.state.hash[3] = this.state.hash[3] + i | 0, this.state.hash[4] =
					this.state.hash[4] + o | 0
			}
		}, {
			key: "finalize",
			value: function() {
				return this.addPaddingISO7816(this.state.message.length < 56 ? 56 - this
						.state.message.length | 0 : 120 - this.state.message.length | 0),
					this.addLengthBits(), this.process(), this.getStateHash()
			}
		}]), l);

	function l(t) {
		var e;
		return function(t) {
			if (!(t instanceof l)) throw new TypeError("Cannot call a class as a function")
		}(this), e = this, (t = !(t = s(l).call(this, t)) || "object" !== i(t) && "function" !=
			typeof t ? function() {
				if (void 0 !== e) return e;
				throw new ReferenceError("this hasn't been initialised - super() hasn't been called")
			}() : t).options.rounds = t.options.rounds || 80, t.W = new Array(80), t
	}
	e.a = r
}, function(t, e, n) {
	"use strict";
	var c = n(0),
		n = n(3);

	function r(t) {
		return (r = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(t) {
			return typeof t
		} : function(t) {
			return t && "function" == typeof Symbol && t.constructor === Symbol && t !== Symbol
				.prototype ? "symbol" : typeof t
		})(t)
	}

	function i(t, e, n) {
		return (i = "undefined" != typeof Reflect && Reflect.get ? Reflect.get : function(t, e, n) {
			t = function(t, e) {
				for (; !Object.prototype.hasOwnProperty.call(t, e) && null !== (t = o(t)););
				return t
			}(t, e);
			if (t) {
				e = Object.getOwnPropertyDescriptor(t, e);
				return e.get ? e.get.call(n) : e.value
			}
		})(t, e, n || t)
	}

	function o(t) {
		return (o = Object.setPrototypeOf ? Object.getPrototypeOf : function(t) {
			return t.__proto__ || Object.getPrototypeOf(t)
		})(t)
	}

	function s(t, e) {
		return (s = Object.setPrototypeOf || function(t, e) {
			return t.__proto__ = e, t
		})(t, e)
	}
	var a = new Array(256),
		u = [104, 208, 235, 43, 72, 157, 106, 228, 227, 163, 86, 129, 125, 241, 133, 158, 44, 142, 120, 202,
			23, 169, 97, 213, 93, 11, 140, 60, 119, 81, 34, 66, 63, 84, 65, 128, 204, 134, 179, 24, 46, 87,
			6, 98, 244, 54, 209, 107, 27, 101, 117, 16, 218, 73, 38, 249, 203, 102, 231, 186, 174, 80, 82,
			171, 5, 240, 13, 115, 59, 4, 32, 254, 221, 245, 180, 95, 10, 181, 192, 160, 113, 165, 45, 96,
			114, 147, 57, 8, 131, 33, 92, 135, 177, 224, 0, 195, 18, 145, 138, 2, 28, 230, 69, 194, 196,
			253, 191, 68, 161, 76, 51, 197, 132, 35, 124, 176, 37, 21, 53, 105, 255, 148, 77, 112, 162, 175,
			205, 214, 108, 183, 248, 9, 243, 103, 164, 234, 236, 182, 212, 210, 20, 30, 225, 36, 56, 198,
			219, 75, 122, 58, 222, 94, 223, 149, 252, 170, 215, 206, 7, 15, 61, 88, 154, 152, 156, 242, 167,
			17, 126, 139, 67, 3, 226, 220, 229, 178, 78, 199, 109, 233, 39, 64, 216, 55, 146, 143, 1, 29,
			83, 62, 89, 193, 79, 50, 22, 250, 116, 251, 99, 159, 52, 26, 42, 90, 141, 201, 207, 246, 144,
			40, 136, 155, 49, 14, 189, 74, 232, 150, 166, 12, 200, 121, 188, 190, 239, 110, 70, 151, 91,
			237, 25, 217, 172, 153, 168, 41, 100, 31, 173, 85, 19, 187, 247, 111, 185, 71, 47, 238, 184,
			123, 137, 48, 211, 127, 118, 130
		],
		l = [1, 11, 9, 12, 13, 6, 15, 3, 14, 8, 7, 4, 10, 2, 5, 0],
		h = [7, 12, 11, 13, 14, 4, 9, 15, 6, 3, 8, 10, 2, 5, 1, 0],
		f = new Array(16),
		p = [1, 1, 4, 1, 8, 5, 2, 9],
		d = [1, 1, 3, 1, 5, 8, 9, 5],
		g = new Array(512),
		m = new Array(22),
		v = new Array(512),
		y = new Array(22),
		b = new Array(512),
		w = new Array(22);

	function _(t, e) {
		for (var n = new Array(512), r = new Array(22), i = 0; i < 8; i++) n[i] = [];
		for (var o = 0; o < 256; o++) {
			var s = new Array(10);
			s[1] = t[o], s[2] = s[1] << 1, 256 <= s[2] && (s[2] ^= 285), s[3] = s[2] ^ s[1], s[4] = s[2] <<
				1, 256 <= s[4] && (s[4] ^= 285), s[5] = s[4] ^ s[1], s[8] = s[4] << 1, 256 <= s[8] && (s[
					8] ^= 285), s[9] = s[8] ^ s[1], n[0][2 * o] = s[e[0]] << 24 | s[e[1]] << 16 | s[e[2]] <<
				8 | s[e[3]], n[0][2 * o + 1] = s[e[4]] << 24 | s[e[5]] << 16 | s[e[6]] << 8 | s[e[7]];
			for (var a = 1; a < 8; a++) n[a][2 * o] = Object(c.d)(n[0][2 * o + 1], n[0][2 * o], a << 3), n[
				a][2 * o + 1] = Object(c.c)(n[0][2 * o + 1], n[0][2 * o], a << 3)
		}
		r[0] = 0, r[1] = 0;
		for (var u = 1; u <= 10; u++) r[2 * u] = 4278190080 & n[0][16 * u - 16] ^ 16711680 & n[1][16 * u -
			14
		] ^ 65280 & n[2][16 * u - 12] ^ 255 & n[3][16 * u - 10], r[2 * u + 1] = 4278190080 & n[4][16 *
			u - 7
		] ^ 16711680 & n[5][16 * u - 5] ^ 65280 & n[6][16 * u - 3] ^ 255 & n[7][16 * u - 1];
		return [n, r]
	}! function() {
		! function() {
			for (var t = 0; t < 16; t++) f[l[t]] = 0 | t;
			for (var e = 0; e < 256; e++) {
				var n = l[e >> 4],
					r = f[15 & e],
					i = h[n ^ r];
				a[e] = l[n ^ i] << 4 | f[r ^ i]
			}
		}();
		var t = _(u, d);
		v = t[0], y = t[1], t = _(a, d), b = t[0], w = t[1], t = _(a, p), g = t[0], m = t[1]
	}();
	(function(t, e) {
		if ("function" != typeof e && null !== e) throw new TypeError(
			"Super expression must either be null or a function");
		t.prototype = Object.create(e && e.prototype, {
			constructor: {
				value: t,
				writable: !0,
				configurable: !0
			}
		}), e && s(t, e)
	})(x, n.a),
	function(t, e) {
		for (var n = 0; n < e.length; n++) {
			var r = e[n];
			r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0),
				Object.defineProperty(t, r.key, r)
		}
	}(x.prototype, [{
		key: "reset",
		value: function() {
			i(o(x.prototype), "reset", this).call(this), this.state.hash = new Array(16);
			for (var t = 0; t < 16; t++) this.state.hash[t] = 0
		}
	}, {
		key: "processBlock",
		value: function(t) {
			for (var e = new Array(16), n = [], r = 0; r < 16; r++) n[r] = t[r] ^ (e[r] = this
				.state.hash[r]) | 0;
			for (var i = [], o = 1; o <= this.options.rounds; o++) {
				for (var s = 0; s < 8; s++) {
					i[2 * s] = 0;
					for (var a = i[2 * s + 1] = 0, u = 56, c = 0; a < 8; a++, c = (u -= 8) <
						32 ? 1 : 0) i[2 * s] ^= this.C[a][2 * (e[2 * (s - a & 7) + c] >>> u %
						32 & 255)], i[2 * s + 1] ^= this.C[a][2 * (e[2 * (s - a & 7) +
						c] >>> u % 32 & 255) + 1]
				}
				for (var l = 0; l < 16; l++) e[l] = i[l];
				e[0] ^= this.RC[2 * o], e[1] ^= this.RC[2 * o + 1];
				for (var h = 0; h < 8; h++) {
					i[2 * h] = e[2 * h], i[2 * h + 1] = e[2 * h + 1];
					for (var f = 0, p = 56, d = 0; f < 8; f++, d = (p -= 8) < 32 ? 1 : 0) i[2 *
						h] ^= this.C[f][2 * (n[2 * (h - f & 7) + d] >>> p % 32 & 255)], i[
						2 * h + 1] ^= this.C[f][2 * (n[2 * (h - f & 7) + d] >>> p % 32 &
						255) + 1]
				}
				for (var g = 0; g < 16; g++) n[g] = i[g]
			}
			for (var m = 0; m < 16; m++) this.state.hash[m] ^= n[m] ^ t[m]
		}
	}, {
		key: "finalize",
		value: function() {
			return this.addPaddingISO7816(this.state.message.length < 32 ? 56 - this.state
					.message.length | 0 : 120 - this.state.message.length | 0), this
				.addLengthBits(), this.process(), this.getStateHash()
		}
	}]), n = x;

	function x(t) {
		var e, n;
		switch (function(t) {
				if (!(t instanceof x)) throw new TypeError("Cannot call a class as a function")
			}(this), (t = t || {}).type = t.type || "", t.rounds = t.rounds || 10, n = this, (e = !(t = o(x)
				.call(this, t)) || "object" !== r(t) && "function" != typeof t ? function() {
				if (void 0 !== n) return n;
				throw new ReferenceError("this hasn't been initialised - super() hasn't been called")
			}() : t).options.type) {
			case "0":
			case 0:
				e.C = v, e.RC = y;
				break;
			case "t":
				e.C = b, e.RC = w;
				break;
			default:
				e.C = g, e.RC = m
		}
		return e
	}
	e.a = n
}, function(t, e, n) {
	"use strict";

	function r(t) {
		return (r = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(t) {
			return typeof t
		} : function(t) {
			return t && "function" == typeof Symbol && t.constructor === Symbol && t !== Symbol
				.prototype ? "symbol" : typeof t
		})(t)
	}

	function i(t) {
		return (i = Object.setPrototypeOf ? Object.getPrototypeOf : function(t) {
			return t.__proto__ || Object.getPrototypeOf(t)
		})(t)
	}

	function o(t, e) {
		return (o = Object.setPrototypeOf || function(t, e) {
			return t.__proto__ = e, t
		})(t, e)
	}(function(t, e) {
		if ("function" != typeof e && null !== e) throw new TypeError(
			"Super expression must either be null or a function");
		t.prototype = Object.create(e && e.prototype, {
			constructor: {
				value: t,
				writable: !0,
				configurable: !0
			}
		}), e && o(t, e)
	})(s, n(4).a),
	function(t, e) {
		for (var n = 0; n < e.length; n++) {
			var r = e[n];
			r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0),
				Object.defineProperty(t, r.key, r)
		}
	}(s.prototype, [{
		key: "process",
		value: function() {
			for (; this.state.message.length >= this.blockSizeInBytes;) {
				this.blockUnits = new Array(this.blockSizeInBytes);
				for (var t = 0; t < this.blockSizeInBytes; t++) this.blockUnits[t] = 0 | this
					.state.message.charCodeAt(t);
				this.state.message = this.state.message.substr(this.blockSizeInBytes), this
					.processBlock(this.blockUnits)
			}
		}
	}, {
		key: "processBlock",
		value: function(t) {}
	}, {
		key: "getStateHash",
		value: function(t) {
			t = t || this.state.hash.length;
			for (var e = "", n = 0; n < t; n++) e += String.fromCharCode(255 & this.state.hash[
				n]);
			return e
		}
	}]), n = s;

	function s(t) {
		var e;
		return function(t) {
			if (!(t instanceof s)) throw new TypeError("Cannot call a class as a function")
		}(this), e = this, (t = !(t = i(s).call(this, t)) || "object" !== r(t) && "function" !=
			typeof t ? function() {
				if (void 0 !== e) return e;
				throw new ReferenceError("this hasn't been initialised - super() hasn't been called")
			}() : t).unitSize = 1, t.blockSizeInBytes = t.blockSize * t.unitSize, t.blockUnits = [], t
	}

	function a(t) {
		return (a = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(t) {
			return typeof t
		} : function(t) {
			return t && "function" == typeof Symbol && t.constructor === Symbol && t !== Symbol
				.prototype ? "symbol" : typeof t
		})(t)
	}

	function u(t, e, n) {
		return (u = "undefined" != typeof Reflect && Reflect.get ? Reflect.get : function(t, e, n) {
			t = function(t, e) {
				for (; !Object.prototype.hasOwnProperty.call(t, e) && null !== (t = c(t)););
				return t
			}(t, e);
			if (t) {
				e = Object.getOwnPropertyDescriptor(t, e);
				return e.get ? e.get.call(n) : e.value
			}
		})(t, e, n || t)
	}

	function c(t) {
		return (c = Object.setPrototypeOf ? Object.getPrototypeOf : function(t) {
			return t.__proto__ || Object.getPrototypeOf(t)
		})(t)
	}

	function l(t, e) {
		return (l = Object.setPrototypeOf || function(t, e) {
			return t.__proto__ = e, t
		})(t, e)
	}
	var h = [41, 46, 67, 201, 162, 216, 124, 1, 61, 54, 84, 161, 236, 240, 6, 19, 98, 167, 5, 243, 192, 199,
			115, 140, 152, 147, 43, 217, 188, 76, 130, 202, 30, 155, 87, 60, 253, 212, 224, 22, 103, 66,
			111, 24, 138, 23, 229, 18, 190, 78, 196, 214, 218, 158, 222, 73, 160, 251, 245, 142, 187, 47,
			238, 122, 169, 104, 121, 145, 21, 178, 7, 63, 148, 194, 16, 137, 11, 34, 95, 33, 128, 127, 93,
			154, 90, 144, 50, 39, 53, 62, 204, 231, 191, 247, 151, 3, 255, 25, 48, 179, 72, 165, 181, 209,
			215, 94, 146, 42, 172, 86, 170, 198, 79, 184, 56, 210, 150, 164, 125, 182, 118, 252, 107, 226,
			156, 116, 4, 241, 69, 157, 112, 89, 100, 113, 135, 32, 134, 91, 207, 101, 230, 45, 168, 2, 27,
			96, 37, 173, 174, 176, 185, 246, 28, 70, 97, 105, 52, 64, 126, 15, 85, 71, 163, 35, 221, 81,
			175, 58, 195, 92, 249, 206, 186, 197, 234, 38, 44, 83, 13, 110, 133, 40, 132, 9, 211, 223, 205,
			244, 65, 129, 77, 82, 106, 220, 55, 200, 108, 193, 171, 250, 36, 225, 123, 8, 12, 189, 177, 74,
			120, 136, 149, 139, 227, 99, 232, 109, 233, 203, 213, 254, 59, 0, 29, 57, 242, 239, 183, 14,
			102, 88, 208, 228, 166, 119, 114, 248, 235, 117, 75, 10, 49, 68, 80, 180, 143, 237, 31, 26, 219,
			153, 141, 51, 159, 17, 131, 20
		],
		n = (function(t, e) {
			if ("function" != typeof e && null !== e) throw new TypeError(
				"Super expression must either be null or a function");
			t.prototype = Object.create(e.prototype, {
				constructor: {
					value: t,
					writable: !0,
					configurable: !0
				}
			}), l(t, e)
		}(f, n), function(t, e) {
			for (var n = 0; n < e.length; n++) {
				var r = e[n];
				r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !
					0), Object.defineProperty(t, r.key, r)
			}
		}(f.prototype, [{
			key: "reset",
			value: function() {
				u(c(f.prototype), "reset", this).call(this), this.state.hash = new Array(
					48), this.state.checksum = new Array(16)
			}
		}, {
			key: "processBlock",
			value: function(t) {
				for (var e = 0; e < 16; e++) this.state.hash[16 + e] = 0 | t[e], this.state
					.hash[32 + e] = t[e] ^ this.state.hash[e];
				for (var n = 0, r = 0; r < this.options.rounds; r++) {
					for (var i = 0; i < 48; i++) n = this.state.hash[i] ^= h[n];
					n = n + r & 255
				}
				n = 255 & this.state.checksum[15];
				for (var o = 0; o < 16; o++) n = this.state.checksum[o] ^= h[t[o] ^ n]
			}
		}, {
			key: "finalize",
			value: function() {
				this.addPaddingPKCS7(16 - (15 & this.state.message.length) | 0), this
					.process();
				for (var t = 0; t < 16; t++) this.state.message += String.fromCharCode(this
					.state.checksum[t]);
				return this.process(), this.getStateHash(16)
			}
		}]), f);

	function f(t) {
		var e;
		return function(t) {
			if (!(t instanceof f)) throw new TypeError("Cannot call a class as a function")
		}(this), e = this, (t = !(t = c(f).call(this, t)) || "object" !== a(t) && "function" !=
			typeof t ? function() {
				if (void 0 !== e) return e;
				throw new ReferenceError("this hasn't been initialised - super() hasn't been called")
			}() : t).options.rounds = t.options.rounds || 18, t
	}
	e.a = n
}, function(t, e, n) {
	"use strict";
	var r = n(5),
		c = n(0);

	function i(t) {
		return (i = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(t) {
			return typeof t
		} : function(t) {
			return t && "function" == typeof Symbol && t.constructor === Symbol && t !== Symbol
				.prototype ? "symbol" : typeof t
		})(t)
	}

	function o(t, e, n) {
		return (o = "undefined" != typeof Reflect && Reflect.get ? Reflect.get : function(t, e, n) {
			t = function(t, e) {
				for (; !Object.prototype.hasOwnProperty.call(t, e) && null !== (t = s(t)););
				return t
			}(t, e);
			if (t) {
				e = Object.getOwnPropertyDescriptor(t, e);
				return e.get ? e.get.call(n) : e.value
			}
		})(t, e, n || t)
	}

	function s(t) {
		return (s = Object.setPrototypeOf ? Object.getPrototypeOf : function(t) {
			return t.__proto__ || Object.getPrototypeOf(t)
		})(t)
	}

	function a(t, e) {
		return (a = Object.setPrototypeOf || function(t, e) {
			return t.__proto__ = e, t
		})(t, e)
	}
	var l = [0, 1518500249, 1859775393, 2400959708],
		h = [5, 11, 7, 15, 6, 13, 8, 14, 7, 12, 9, 11, 8, 15, 6, 12, 9, 14, 5, 13],
		f = [10, 17, 25, 30],
		p = [18, 0, 1, 2, 3, 19, 4, 5, 6, 7, 16, 8, 9, 10, 11, 17, 12, 13, 14, 15, 22, 3, 6, 9, 12, 23, 15,
			2, 5, 8, 20, 11, 14, 1, 4, 21, 7, 10, 13, 0, 26, 12, 5, 14, 7, 27, 0, 9, 2, 11, 24, 4, 13, 6,
			15, 25, 8, 1, 10, 3, 30, 7, 2, 13, 8, 31, 3, 14, 9, 4, 28, 15, 10, 5, 0, 29, 11, 6, 1, 12
		],
		r = (function(t, e) {
			if ("function" != typeof e && null !== e) throw new TypeError(
				"Super expression must either be null or a function");
			t.prototype = Object.create(e && e.prototype, {
				constructor: {
					value: t,
					writable: !0,
					configurable: !0
				}
			}), e && a(t, e)
		}(u, r.a), function(t, e) {
			for (var n = 0; n < e.length; n++) {
				var r = e[n];
				r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !
					0), Object.defineProperty(t, r.key, r)
			}
		}(u.prototype, [{
			key: "reset",
			value: function() {
				o(s(u.prototype), "reset", this).call(this), this.state.hash = [1732584193,
					4023233417, 2562383102, 271733878, 3285377520
				]
			}
		}, {
			key: "processBlock",
			value: function(t) {
				for (var e = 0 | this.state.hash[0], n = 0 | this.state.hash[1], r = 0 |
						this.state.hash[2], i = 0 | this.state.hash[3], o = 0 | this.state
						.hash[4], s = 0; s < 16; s++) this.W[s] = 0 | t[s];
				this.W[16] = this.W[0] ^ this.W[1] ^ this.W[2] ^ this.W[3] | 0, this.W[17] =
					this.W[4] ^ this.W[5] ^ this.W[6] ^ this.W[7] | 0, this.W[18] = this.W[
						8] ^ this.W[9] ^ this.W[10] ^ this.W[11] | 0, this.W[19] = this.W[
						12] ^ this.W[13] ^ this.W[14] ^ this.W[15] | 0, this.W[20] = this.W[
						3] ^ this.W[6] ^ this.W[9] ^ this.W[12] | 0, this.W[21] = this.W[
					2] ^ this.W[5] ^ this.W[8] ^ this.W[15] | 0, this.W[22] = this.W[1] ^
					this.W[4] ^ this.W[11] ^ this.W[14] | 0, this.W[23] = this.W[0] ^ this
					.W[7] ^ this.W[10] ^ this.W[13] | 0, this.W[24] = this.W[5] ^ this.W[
					7] ^ this.W[12] ^ this.W[14] | 0, this.W[25] = this.W[0] ^ this.W[2] ^
					this.W[9] ^ this.W[11] | 0, this.W[26] = this.W[4] ^ this.W[6] ^ this.W[
						13] ^ this.W[15] | 0, this.W[27] = this.W[1] ^ this.W[3] ^ this.W[
					8] ^ this.W[10] | 0, this.W[28] = this.W[2] ^ this.W[7] ^ this.W[8] ^
					this.W[13] | 0, this.W[29] = this.W[3] ^ this.W[4] ^ this.W[9] ^ this.W[
						14] | 0, this.W[30] = this.W[0] ^ this.W[5] ^ this.W[10] ^ this.W[
						15] | 0, this.W[31] = this.W[1] ^ this.W[6] ^ this.W[11] ^ this.W[
						12] | 0;
				for (var a = 0; a < this.options.rounds; a++) var u = Object(c.a)(e, h[a %
						20]) + o + this.W[p[a]] + l[a / 20 >> 0] | 0,
					u = a < 20 ? u + (n & r | ~n & i) | 0 : !(a < 40) && a < 60 ? u + (
						r ^ (n | ~i)) | 0 : u + (n ^ r ^ i) | 0,
					o = i,
					i = r,
					r = 0 | Object(c.a)(n, f[a / 20 >> 0]),
					n = e,
					e = u;
				this.state.hash[0] = this.state.hash[0] + e | 0, this.state.hash[1] = this
					.state.hash[1] + n | 0, this.state.hash[2] = this.state.hash[2] + r | 0,
					this.state.hash[3] = this.state.hash[3] + i | 0, this.state.hash[4] =
					this.state.hash[4] + o | 0
			}
		}, {
			key: "finalize",
			value: function() {
				return this.addPaddingISO7816(this.state.message.length < 56 ? 56 - this
						.state.message.length | 0 : 120 - this.state.message.length | 0),
					this.addLengthBits(), this.process(), this.getStateHash()
			}
		}]), u);

	function u(t) {
		var e;
		return function(t) {
			if (!(t instanceof u)) throw new TypeError("Cannot call a class as a function")
		}(this), e = this, (t = !(t = s(u).call(this, t)) || "object" !== i(t) && "function" !=
			typeof t ? function() {
				if (void 0 !== e) return e;
				throw new ReferenceError("this hasn't been initialised - super() hasn't been called")
			}() : t).options.rounds = t.options.rounds || 80, t.W = new Array(32), t
	}
	e.a = r
}, function(t, e, n) {
	"use strict";
	n.d(e, "a", function() {
		return r
	});
	var o = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";

	function r(t) {
		for (var e = "", n = t.length - t.length % 3 | 0, r = 0, i = 0; i < n; i += 3) r = t.charCodeAt(
			i) << 16 | t.charCodeAt(i + 1) << 8 | t.charCodeAt(i + 2), e += o.charAt(r >> 18) + o.charAt(
				r >> 12 & 63) + o.charAt(r >> 6 & 63) + o.charAt(63 & r);
		return t.length - n == 2 ? (r = t.charCodeAt(n) << 16 | t.charCodeAt(1 + n) << 8, e += o.charAt(r >>
			18) + o.charAt(r >> 12 & 63) + o.charAt(r >> 6 & 63) + "=") : t.length - n == 1 && (r = t
			.charCodeAt(n) << 16, e += o.charAt(r >> 18) + o.charAt(r >> 12 & 63) + "=="), e
	}
}, function(t, e, n) {
	"use strict";
	var r = n(5),
		u = n(0);

	function i(t) {
		return (i = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(t) {
			return typeof t
		} : function(t) {
			return t && "function" == typeof Symbol && t.constructor === Symbol && t !== Symbol
				.prototype ? "symbol" : typeof t
		})(t)
	}

	function o(t, e) {
		for (var n = 0; n < e.length; n++) {
			var r = e[n];
			r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0),
				Object.defineProperty(t, r.key, r)
		}
	}

	function s(t, e, n) {
		return (s = "undefined" != typeof Reflect && Reflect.get ? Reflect.get : function(t, e, n) {
			t = function(t, e) {
				for (; !Object.prototype.hasOwnProperty.call(t, e) && null !== (t = a(t)););
				return t
			}(t, e);
			if (t) {
				e = Object.getOwnPropertyDescriptor(t, e);
				return e.get ? e.get.call(n) : e.value
			}
		})(t, e, n || t)
	}

	function a(t) {
		return (a = Object.setPrototypeOf ? Object.getPrototypeOf : function(t) {
			return t.__proto__ || Object.getPrototypeOf(t)
		})(t)
	}

	function c(t, e) {
		return (c = Object.setPrototypeOf || function(t, e) {
			return t.__proto__ = e, t
		})(t, e)
	}
	var l = [
			[3, 7, 11, 19],
			[3, 5, 9, 13],
			[3, 9, 11, 15]
		],
		h = 1518500249,
		f = 1859775393,
		n = (function(t, e) {
			if ("function" != typeof e && null !== e) throw new TypeError(
				"Super expression must either be null or a function");
			t.prototype = Object.create(e && e.prototype, {
				constructor: {
					value: t,
					writable: !0,
					configurable: !0
				}
			}), e && c(t, e)
		}(p, r.a), n = [{
			key: "FF",
			value: function(t, e, n) {
				return t & e | ~t & n
			}
		}, {
			key: "GG",
			value: function(t, e, n) {
				return t & e | t & n | e & n
			}
		}, {
			key: "HH",
			value: function(t, e, n) {
				return t ^ e ^ n
			}
		}, {
			key: "CC",
			value: function(t, e, n, r, i, o, s, a) {
				return 0 | Object(u.a)(n + t(r, i, o) + s + e, a)
			}
		}], o((r = p).prototype, [{
			key: "reset",
			value: function() {
				s(a(p.prototype), "reset", this).call(this), this.state.hash = [1732584193,
					-271733879, -1732584194, 271733878
				]
			}
		}, {
			key: "processBlock",
			value: function(t) {
				var e = 0 | this.state.hash[0],
					n = 0 | this.state.hash[1],
					r = 0 | this.state.hash[2],
					i = 0 | this.state.hash[3],
					e = p.CC(p.FF, 0, e, n, r, i, t[0], l[0][0]),
					i = p.CC(p.FF, 0, i, e, n, r, t[1], l[0][1]),
					r = p.CC(p.FF, 0, r, i, e, n, t[2], l[0][2]),
					n = p.CC(p.FF, 0, n, r, i, e, t[3], l[0][3]);
				e = p.CC(p.FF, 0, e, n, r, i, t[4], l[0][0]), i = p.CC(p.FF, 0, i, e, n, r,
						t[5], l[0][1]), r = p.CC(p.FF, 0, r, i, e, n, t[6], l[0][2]), n = p
					.CC(p.FF, 0, n, r, i, e, t[7], l[0][3]), e = p.CC(p.FF, 0, e, n, r, i,
						t[8], l[0][0]), i = p.CC(p.FF, 0, i, e, n, r, t[9], l[0][1]), r = p
					.CC(p.FF, 0, r, i, e, n, t[10], l[0][2]), n = p.CC(p.FF, 0, n, r, i, e,
						t[11], l[0][3]), e = p.CC(p.FF, 0, e, n, r, i, t[12], l[0][0]), i =
					p.CC(p.FF, 0, i, e, n, r, t[13], l[0][1]), r = p.CC(p.FF, 0, r, i, e, n,
						t[14], l[0][2]), n = p.CC(p.FF, 0, n, r, i, e, t[15], l[0][3]), e =
					p.CC(p.GG, h, e, n, r, i, t[0], l[1][0]), i = p.CC(p.GG, h, i, e, n, r,
						t[4], l[1][1]), r = p.CC(p.GG, h, r, i, e, n, t[8], l[1][2]), n = p
					.CC(p.GG, h, n, r, i, e, t[12], l[1][3]), e = p.CC(p.GG, h, e, n, r, i,
						t[1], l[1][0]), i = p.CC(p.GG, h, i, e, n, r, t[5], l[1][1]), r = p
					.CC(p.GG, h, r, i, e, n, t[9], l[1][2]), n = p.CC(p.GG, h, n, r, i, e,
						t[13], l[1][3]), e = p.CC(p.GG, h, e, n, r, i, t[2], l[1][0]), i = p
					.CC(p.GG, h, i, e, n, r, t[6], l[1][1]), r = p.CC(p.GG, h, r, i, e, n,
						t[10], l[1][2]), n = p.CC(p.GG, h, n, r, i, e, t[14], l[1][3]), e =
					p.CC(p.GG, h, e, n, r, i, t[3], l[1][0]), i = p.CC(p.GG, h, i, e, n, r,
						t[7], l[1][1]), r = p.CC(p.GG, h, r, i, e, n, t[11], l[1][2]), n = p
					.CC(p.GG, h, n, r, i, e, t[15], l[1][3]), e = p.CC(p.HH, f, e, n, r, i,
						t[0], l[2][0]), i = p.CC(p.HH, f, i, e, n, r, t[8], l[2][1]), r = p
					.CC(p.HH, f, r, i, e, n, t[4], l[2][2]), n = p.CC(p.HH, f, n, r, i, e,
						t[12], l[2][3]), e = p.CC(p.HH, f, e, n, r, i, t[2], l[2][0]), i = p
					.CC(p.HH, f, i, e, n, r, t[10], l[2][1]), r = p.CC(p.HH, f, r, i, e, n,
						t[6], l[2][2]), n = p.CC(p.HH, f, n, r, i, e, t[14], l[2][3]), e = p
					.CC(p.HH, f, e, n, r, i, t[1], l[2][0]), i = p.CC(p.HH, f, i, e, n, r,
						t[9], l[2][1]), r = p.CC(p.HH, f, r, i, e, n, t[5], l[2][2]), n = p
					.CC(p.HH, f, n, r, i, e, t[13], l[2][3]), e = p.CC(p.HH, f, e, n, r, i,
						t[3], l[2][0]), i = p.CC(p.HH, f, i, e, n, r, t[11], l[2][1]), r = p
					.CC(p.HH, f, r, i, e, n, t[7], l[2][2]), n = p.CC(p.HH, f, n, r, i, e,
						t[15], l[2][3]), this.state.hash = [this.state.hash[0] + e | 0, this
						.state.hash[1] + n | 0, this.state.hash[2] + r | 0, this.state.hash[
							3] + i | 0
					]
			}
		}, {
			key: "finalize",
			value: function() {
				return this.addPaddingISO7816(this.state.message.length < 56 ? 56 - this
						.state.message.length | 0 : 120 - this.state.message.length | 0),
					this.addLengthBits(), this.process(), this.getStateHash()
			}
		}]), o(r, n), p);

	function p() {
		return function(t) {
				if (!(t instanceof p)) throw new TypeError("Cannot call a class as a function")
			}(this), t = this, !(e = a(p).apply(this, arguments)) || "object" !== i(e) && "function" !=
			typeof e ? function() {
				if (void 0 !== t) return t;
				throw new ReferenceError("this hasn't been initialised - super() hasn't been called")
			}() : e;
		var t, e
	}
	e.a = n
}, function(t, e, n) {
	"use strict";
	var r = n(3),
		u = n(0);

	function i(t) {
		return (i = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(t) {
			return typeof t
		} : function(t) {
			return t && "function" == typeof Symbol && t.constructor === Symbol && t !== Symbol
				.prototype ? "symbol" : typeof t
		})(t)
	}

	function o(t, e, n) {
		return (o = "undefined" != typeof Reflect && Reflect.get ? Reflect.get : function(t, e, n) {
			t = function(t, e) {
				for (; !Object.prototype.hasOwnProperty.call(t, e) && null !== (t = s(t)););
				return t
			}(t, e);
			if (t) {
				e = Object.getOwnPropertyDescriptor(t, e);
				return e.get ? e.get.call(n) : e.value
			}
		})(t, e, n || t)
	}

	function s(t) {
		return (s = Object.setPrototypeOf ? Object.getPrototypeOf : function(t) {
			return t.__proto__ || Object.getPrototypeOf(t)
		})(t)
	}

	function a(t, e) {
		return (a = Object.setPrototypeOf || function(t, e) {
			return t.__proto__ = e, t
		})(t, e)
	}
	var c = [1518500249, 1859775393, 2400959708, 3395469782],
		r = (function(t, e) {
			if ("function" != typeof e && null !== e) throw new TypeError(
				"Super expression must either be null or a function");
			t.prototype = Object.create(e && e.prototype, {
				constructor: {
					value: t,
					writable: !0,
					configurable: !0
				}
			}), e && a(t, e)
		}(l, r.a), function(t, e) {
			for (var n = 0; n < e.length; n++) {
				var r = e[n];
				r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !
					0), Object.defineProperty(t, r.key, r)
			}
		}(l.prototype, [{
			key: "reset",
			value: function() {
				o(s(l.prototype), "reset", this).call(this), this.state.hash = [1732584193,
					-271733879, -1732584194, 271733878, -1009589776
				]
			}
		}, {
			key: "processBlock",
			value: function(t) {
				for (var e = 0 | this.state.hash[0], n = 0 | this.state.hash[1], r = 0 |
						this.state.hash[2], i = 0 | this.state.hash[3], o = 0 | this.state
						.hash[4], s = 0; s < this.options.rounds; s++) {
					this.W[s] = s < 16 ? 0 | t[s] : this.W[s - 3] ^ this.W[s - 8] ^ this.W[
						s - 14] ^ this.W[s - 16] | 0;
					var a = Object(u.a)(e, 5) + o + this.W[s] + c[s / 20 >> 0] | 0,
						a = s < 20 ? a + (n & r | ~n & i) | 0 : !(s < 40) && s < 60 ? a + (
							n & r | n & i | r & i) | 0 : a + (n ^ r ^ i) | 0,
						o = i,
						i = r,
						r = 0 | Object(u.a)(n, 30),
						n = e,
						e = a
				}
				this.state.hash[0] = this.state.hash[0] + e | 0, this.state.hash[1] = this
					.state.hash[1] + n | 0, this.state.hash[2] = this.state.hash[2] + r | 0,
					this.state.hash[3] = this.state.hash[3] + i | 0, this.state.hash[4] =
					this.state.hash[4] + o | 0
			}
		}, {
			key: "finalize",
			value: function() {
				return this.addPaddingISO7816(this.state.message.length < 56 ? 56 - this
						.state.message.length | 0 : 120 - this.state.message.length | 0),
					this.addLengthBits(), this.process(), this.getStateHash()
			}
		}]), l);

	function l(t) {
		var e;
		return function(t) {
			if (!(t instanceof l)) throw new TypeError("Cannot call a class as a function")
		}(this), e = this, (t = !(t = s(l).call(this, t)) || "object" !== i(t) && "function" !=
			typeof t ? function() {
				if (void 0 !== e) return e;
				throw new ReferenceError("this hasn't been initialised - super() hasn't been called")
			}() : t).options.rounds = t.options.rounds || 80, t.W = new Array(80), t
	}
	e.a = r
}, function(t, e, n) {
	"use strict";

	function r(t) {
		for (var e = "", n = new Uint8Array(t), r = 0; r < n.length; r++) e += String.fromCharCode(n[r]);
		return e
	}
	n.d(e, "a", function() {
		return r
	})
}, , function(t, e, n) {
	"use strict";
	var r = (function(t, e) {
		for (var n = 0; n < e.length; n++) {
			var r = e[n];
			r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !
				0), Object.defineProperty(t, r.key, r)
		}
	}(i.prototype, [{
		key: "update",
		value: function(t) {
			this.hasher.update(t)
		}
	}, {
		key: "finalize",
		value: function() {
			var t = this.hasher.finalize();
			return this.hasher.reset(), this.hasher.update(this.oPad), this.hasher
				.update(t), this.hasher.finalize()
		}
	}]), i);

	function i(t, e) {
		! function(t) {
			if (!(t instanceof i)) throw new TypeError("Cannot call a class as a function")
		}(this), t.length > e.blockSizeInBytes && (e.update(t), t = e.finalize(), e.reset());
		for (var n = t.length; n < e.blockSizeInBytes; n++) t += "\0";
		this.oPad = "";
		for (var r = 0; r < t.length; r++) e.update(String.fromCharCode(54 ^ t.charCodeAt(r))), this.oPad +=
			String.fromCharCode(92 ^ t.charCodeAt(r));
		this.hasher = e
	}
	e.a = r
}, , , , , , , , , function(t, e, n) {
	"use strict";
	n.r(e);
	var r = n(14),
		i = n(13),
		o = n(16),
		s = n(10),
		a = n(8),
		u = n(17),
		c = n(11),
		l = n(7),
		h = n(6),
		f = n(9),
		p = n(12),
		d = n(1),
		g = n(18),
		m = n(2),
		v = n(15),
		y = n(20);
	(function(t, e) {
		for (var n = 0; n < e.length; n++) {
			var r = e[n];
			r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0),
				Object.defineProperty(t, r.key, r)
		}
	})(b.prototype, [{
		key: "getHasher",
		value: function(t, e) {
			switch (e = e || {}, t) {
				case "has160":
					return new r.a(e);
				case "md2":
					return new i.a(e);
				case "md4":
					return new o.a(e);
				case "md5":
					return new s.a(e);
				case "ripemd128":
					return e = Object.assign({}, {
						length: 128
					}, e), new a.a(e);
				case "ripemd":
				case "ripemd160":
					return e = Object.assign({}, {
						length: 160
					}, e), new a.a(e);
				case "ripemd256":
					return e = Object.assign({}, {
						length: 256
					}, e), new a.a(e);
				case "ripemd320":
					return e = Object.assign({}, {
						length: 320
					}, e), new a.a(e);
				case "sha0":
					return new u.a(e);
				case "sha1":
					return new c.a(e);
				case "sha224":
					return e = Object.assign({}, {
						length: 224
					}, e), new l.a(e);
				case "sha256":
					return e = Object.assign({}, {
						length: 256
					}, e), new l.a(e);
				case "sha384":
					return e = Object.assign({}, {
						length: 384
					}, e), new h.a(e);
				case "sha512":
					return e = Object.assign({}, {
						length: 512
					}, e), new h.a(e);
				case "sha512/224":
					return e = Object.assign({}, {
						length: 224
					}, e), new h.a(e);
				case "sha512/256":
					return e = Object.assign({}, {
						length: 256
					}, e), new h.a(e);
				case "snefru":
				case "snefru128":
				case "snefru128/8":
					return e = Object.assign({}, {
						length: 128
					}, e), new f.a(e);
				case "snefru256":
				case "snefru256/8":
					return e = Object.assign({}, {
						length: 256
					}, e), new f.a(e);
				case "snefru128/2":
					return e = Object.assign({}, {
						length: 128,
						rounds: 2
					}, e), new f.a(e);
				case "snefru256/4":
					return e = Object.assign({}, {
						length: 256,
						rounds: 4
					}, e), new f.a(e);
				case "whirlpool":
					return new p.a(e);
				case "whirlpool-0":
					return e = Object.assign({}, {
						type: "0"
					}, e), new p.a(e);
				case "whirlpool-t":
					return e = Object.assign({}, {
						type: "t"
					}, e), new p.a(e)
			}
		}
	}, {
		key: "hash",
		value: function(t, e, n) {
			n = n || {};
			n = this.getHasher(t, n);
			return n.update(Object(d.a)(e)), Object(m.a)(n.finalize())
		}
	}, {
		key: "getHmac",
		value: function(t, e) {
			return new y.a(t, e)
		}
	}, {
		key: "hmac",
		value: function(t, e, n) {
			n = this.getHmac(Object(d.a)(t), n);
			return n.update(Object(d.a)(e)), Object(m.a)(n.finalize())
		}
	}]), n = b;

	function b() {
		! function(t) {
			if (!(t instanceof b)) throw new TypeError("Cannot call a class as a function")
		}(this), this.encoder = {}, this.encoder.fromUtf = d.a, this.encoder.fromArrayBuffer = g.a, this
			.encoder.toHex = m.a, this.encoder.toBase64 = v.a
	}
	n = new n, e.default = n
}]).default;
! function(s) {
	"use strict";
	var n = {
		page: 1,
		pageSize: 200,
		total: 0,
		showTotal: !1,
		totalTxt: "共{total}条",
		noData: !1,
		showSkip: !1,
		showPN: !0,
		prevPage: "上一页",
		nextPage: "下一页",
		fastForward: 0,
		selectOption: [],
		backFun: function(t) {}
	};

	function e(t, e) {
		this.element = s(t), this.settings = s.extend({}, n, e), this.pageNum = 1, this.pageList = [], this.pageTatol =
			0, this.init()
	}
	s.extend(e.prototype, {
		init: function() {
			this.element.empty(), this.viewHtml(), this.clickBtn()
		},
		creatHtml: function(t) {
			t == this.settings.page ? this.pageList.push('<button class="active" data-page=' + t + ">" + t +
				"</button>") : this.pageList.push("<button data-page=" + t + ">" + t + "</button>")
		},
		viewHtml: function() {
			var t = this.settings,
				e = 0,
				n = [];
			if (0 < t.total) e = Math.ceil(t.total / t.pageSize);
			else {
				if (!t.noData) return;
				e = 1, t.page = 1, t.total = 0
			}
			if (this.pageTatol = e, this.pageNum = t.page, t.showTotal && n.push(
					'<div class="spage-total">' + t.totalTxt.replace(/\{(\w+)\}/gi, t.total) + "</div>"), n
				.push('<div class="spage-number">'), this.pageList = [], t.showPN && (1 == t.page ? this
					.pageList.push(
						'<button class="button-disabled" data-page="prev"><i class="prevBtn"></i></button>'
						) : this.pageList.push('<button data-page="prev"><i class="prevBtn"></i></button>')
					), e <= 6)
				for (var r = 1; r < e + 1; r++) this.creatHtml(r);
			else if (t.page < 3) {
				for (r = 1; r <= 3; r++) this.creatHtml(r);
				this.pageList.push(
					'<button data-page="after" class="spage-after">...</button><button data-page=' + e +
					">" + e + "</button>")
			} else if (t.page > e - 3) {
				this.pageList.push(
					'<button data-page="1">1</button><button data-page="before" class="spage-before">...</button>'
					);
				for (r = e - 3; r <= e; r++) this.creatHtml(r)
			} else {
				this.pageList.push('<button data-page="1">1</button>'), 3 < t.page && this.pageList.push(
					'<button data-page="before" class="spage-before">...</button>');
				for (r = t.page - 1; r <= Number(t.page) + 1; r++) this.creatHtml(r);
				t.page <= e - 3 && this.pageList.push(
					'<button data-page="after" class="spage-after">...</button>'), this.pageList.push(
					"<button data-page=" + e + ">" + e + "</button>")
			}
			if (t.showPN && (t.page == e ? this.pageList.push(
						'<button class="button-disabled" data-page="next"><i class="nextBtn"></i></button>'
						) : this.pageList.push('<button data-page="next"><i class="nextBtn"></i></button>')
					), n.push(this.pageList.join("")), n.push("</div>"), 0 < t.selectOption.length) {
				for (var i = '<select class="selectNum" id="selectNum">', o = 0; o <= t.selectOption
					.length - 1; o++) i += "<option value=" + t.selectOption[o] + " ", t.pageSize === t
					.selectOption[o] ? i += "selected>" + t.selectOption[o] + "行/页</option>" : i += ">" + t
					.selectOption[o] + "行/页</option>";
				i += "</select>", n.push(i)
			}
			t.showSkip && n.push(
				'<div class="spage-skip">跳至&nbsp;<input type="text" class="luckysheet-mousedown-cancel" value="' +
				t.page + '"/>&nbsp;页&nbsp;&nbsp;</div>'), this.element.html(n.join(""))
		},
		clickBtn: function() {
			var n = this,
				r = this.settings,
				i = this.element,
				o = this.pageTatol;
			this.element.on("change", "select", function(t) {
				var e = parseInt(document.getElementById("selectNum").value);
				r.pageSize = e, r.page = 1, n.element.empty(), n.viewHtml(), r.backFun(r)
			}), this.element.off("click", "button"), this.element.on("click", "button", function() {
				var t = s(this).data("page");
				switch (t) {
					case "prev":
						r.page = 1 <= r.page - 1 ? r.page - 1 : 1, t = r.page;
						break;
					case "next":
						r.page = Number(r.page) + 1 <= o ? Number(r.page) + 1 : o, t = r.page;
						break;
					case "before":
						r.page = 1 <= r.page - r.fastForward ? r.page - r.fastForward : 1, t = r
							.page;
						break;
					case "after":
						r.page = Number(r.page) + Number(r.fastForward) <= o ? Number(r.page) +
							Number(r.fastForward) : o, t = r.page;
						break;
					case "go":
						var e = parseInt(i.find("input").val());
						if (!(/^[0-9]*$/.test(e) && 1 <= e && e <= o)) return;
						t = r.page = e;
						break;
					default:
						r.page = t
				}
				t != n.pageNum && (n.pageNum = r.page, n.viewHtml(), r.backFun(r))
			}), this.element.off("keyup", "input"), this.element.on("keyup", "input", function(t) {
				13 == t.keyCode && (t = parseInt(i.find("input").val()), /^[0-9]*$/.test(t) && 1 <=
					t && t <= o && t != n.pageNum && (r.page = t, n.pageNum = t, n.viewHtml(), r
						.backFun(r)))
			}), 0 < r.fastForward && (i.find(".spage-after").hover(function() {
				s(this).html("&raquo;")
			}, function() {
				s(this).html("...")
			}), i.find(".spage-before").hover(function() {
				s(this).html("&laquo;")
			}, function() {
				s(this).html("...")
			}))
		}
	}), s.fn.sPage = function(t) {
		return this.each(function() {
			new e(this, t)
		})
	}
}(jQuery, (window, document));